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
Nikolay Golub
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
Nikolay Golub
source
to share