PyQt, Qtable clears column when sort is enabled

I have a bug in the following function. This function updates the table, adjusts the size of the columns, and sorts the table. But in some cases, for some rows, the text in columns 3 and 4 is empty. I found out that this is happening in the "problem code" section. What am I wrong in this section? I just want to resize for specific columns. Please help to find out the problem or show me your errors.

def print_day_worklog(self):
    logging.info('RefReshing day worklog table')
    selected_day = self.ui.dateDayWorklogEdit.date().toPyDate()
    day_work = db.get_day_worklog(self.creds[3], selected_day)
    self.ui.tableDayWorklog.setRowCount(len(day_work))
    for row, entry in enumerate(day_work):
        e0 = QtGui.QTableWidgetItem(entry[0])
        e1 = QtGui.QTableWidgetItem(entry[1])
        e2 = QtGui.QTableWidgetItem(entry[2].strftime('%H:%M'))
        e3 = QtGui.QTableWidgetItem(entry[3].strftime('%H:%M'))
        e4 = QtGui.QTableWidgetItem(utils.get_time_spent_string(entry[2],
            entry[3]))
        # debug
        print e0.text(), e1.text(), e2.text(), e3.text(), e4.text()
        self.ui.tableDayWorklog.setItem(row, 0, e0)
        self.ui.tableDayWorklog.setItem(row, 1, e1)
        self.ui.tableDayWorklog.setItem(row, 2, e2)
        self.ui.tableDayWorklog.setItem(row, 3, e3)
        self.ui.tableDayWorklog.setItem(row, 4, e4)

    # problem code starts
    self.ui.tableDayWorklog.horizontalHeader().setResizeMode(1,
        QtGui.QHeaderView.Stretch)
    for column in (0,2,3,4):
        self.ui.tableDayWorklog.resizeColumnToContents(column)
        self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column,
            QtGui.QHeaderView.Fixed)
        self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column,
            QtGui.QHeaderView.Fixed)
    self.ui.tableDayWorklog.sortByColumn(2,0)
    # problem code ends

      

Ps it looks fuzzy but this is because I am trying to catch the error

+3


source to share


1 answer


The problem is sorting the tables. I found this idea in this question. I just added

self.ui.tableDayWorklog.setSortingEnabled(False)

      

before filling the table and



self.ui.tableDayWorklog.setSortingEnabled(True)

      

thereafter. and it helped

+7


source







All Articles