Nik*_*lub 4 python qt pyqt pyqt4
我在下一个函数中有一个bug.此函数刷新表,调整列大小并对表进行排序.但在某些情况下,对于某些行,第3列和第4列中的文本为空.我发现它发生在"问题代码"部分.我在这部分错了什么?我只想更改特定列的大小.请帮助找出问题或告诉我我的错误.
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
Run Code Online (Sandbox Code Playgroud)
Ps看起来不太清楚,但这是因为我试图抓住这个bug
Nik*_*lub 10
问题在于表格排序.我在这个问题上找到了这个想法.我刚刚补充道
self.ui.tableDayWorklog.setSortingEnabled(False)
Run Code Online (Sandbox Code Playgroud)
在填写表格之前
self.ui.tableDayWorklog.setSortingEnabled(True)
Run Code Online (Sandbox Code Playgroud)
之后.它有所帮助