python - PyQt,Qtable 在启用排序时清除列

标签 python qt pyqt pyqt4

我在下一个函数中有一个错误。此功能刷新表,调整列大小和排序表。但在某些情况下,某些行的第 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

附言看起来不太清楚,但这是因为我试图捕获这个错误

最佳答案

问题出在表排序中。我在 this 中找到了这个想法问题。 我刚刚添加了

self.ui.tableDayWorklog.setSortingEnabled(False)

在填表之前

self.ui.tableDayWorklog.setSortingEnabled(True)

之后。并且有帮助

关于python - PyQt,Qtable 在启用排序时清除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446633/

相关文章:

python - 关于 GUI 计时器的建议,以显示后台线程的运行时间?

python - 检查数据库模型的唯一性。通过 Flask-SQLAlchemy 插入或忽略

python - 在 Python 中对列表使用 while 循环

python - 饼图和 geopandas map

c++ - 带 CMake 的 Qt5 - AUTOMOC 开启时 vtable 错误

python - PyQt5 和 Asyncio

c++ - QTableWidget 项的内存管理

C++ Qt : undefined reference to `_imp___ZN12QApplicationC1ERiPPci'

python - 单击时发出 QTableWidgetItem 特定信号

python - 使用 brew 安装 Pyqt4