我将PyQt用于一个简单的应用程序,它从带有JSON格式字符串的日志文件中读取数据,并将它们很好地输出到表中。
除了我试图从“加载”函数发出信号外,一切都按预期工作。这个信号是由主窗口接收的,在一个插槽中设计用来利用新的信息表。
在没有发出信号的情况下,表将完全正确地填充:
通过取消对self.emit
的注释以发出信号,表最终将不完整:
正如您在第一幅图像中看到的,表没有被排序,但是所有字段都被填充。在第二幅图中,表被排序,但是有些字段是空的!
填充表并发送信号的代码:
#openLog function does stuff, then populates the table as follows
self.ui.tableWidget.setRowCount(len(entries))
self.ui.tableWidget.verticalHeader().setVisible(False)
for i, row in enumerate(entries):
for j, col in enumerate(row):
item = QtGui.QTableWidgetItem(col)
self.ui.tableWidget.setItem(i, j, item)
#When this is uncommented, the table ends up having a lot of blank cells.
#self.emit(QtCore.SIGNAL("updateSignal"))
接收信号并执行以下操作的代码:
#main window class
#__init__
self.ui.tableWidget.connect(self,QtCore.SIGNAL("updateSignal"),self.updateTable)
def updateTable(self):
self.ui.tableWidget.sortItems(0,QtCore.Qt.DescendingOrder)
程序流称为:program_init->;register_signal。打开日志的用户操作->;填充表/发出信号的open log函数->;接收信号/度假村表
对于这个方法,我使用信号和插槽,好像没有,QT/Python抛出了一堆警告,说从函数中重新绘制GUI/Pixmap是不安全的。
问题: 如何使QTableWidget对所需的列进行排序,同时确保表已完全填充?
目前没有回答
相关问题 更多 >
编程相关推荐