Python QTableWidget-应用程序运行时刷新单元格
我有一个应用程序,它可以检查日期(linux)并将这个“日期”放入单元格“a1”。 当应用程序运行时,如何在一分钟后刷新单元格“a1”? 将来我将刷新下面列出的所有单元格,但在开始时最好知道如何刷新第一个单元格;] 应用程序将在linux(而不是windows)下运行Python QTableWidget-应用程序运行时刷新单元格,python,python-3.x,pyqt,pyqt4,qtablewidget,Python,Python 3.x,Pyqt,Pyqt4,Qtablewidget,我有一个应用程序,它可以检查日期(linux)并将这个“日期”放入单元格“a1”。 当应用程序运行时,如何在一分钟后刷新单元格“a1”? 将来我将刷新下面列出的所有单元格,但在开始时最好知道如何刷新第一个单元格;] 应用程序将在linux(而不是windows)下运行 您可能对使用QTableView和QAbstractTabelModel而不是QTableWidget的model/view方法实现这一点更感兴趣。使用模型/视图时,如果数据发生更改,显示也会更改。当使用QTableWidget时
您可能对使用QTableView和QAbstractTabelModel而不是QTableWidget的model/view方法实现这一点更感兴趣。使用模型/视图时,如果数据发生更改,显示也会更改。当使用QTableWidget时,您必须进行大量额外的“连接”,这可能会随着代码的增长而变得烦人。thx为此,我的下一个问题是,我是否需要一个按钮,例如“更新”来刷新表中的数据,或者可以在后台自动完成?我说的是QAbstractTabelModel当使用QAbstractTabelModel时,只要设置正确,当数据更改时,显示也应该更改。看看这个,当我第一次尝试理解PyQt4Great中的模型和视图时,我发现它非常有用!非常感谢你的帮助!还有一件事!您的代码中有来自PyQt4.QtCore import*来自PyQt4.QtGui import*来自PyQt4 import QtCore、QtGui的
。我建议只使用最后一个,并用QtGui.Foo()
或QtCore.Bar()
作为所需内容的前缀。这在大多数PyQt程序中是相当标准的!
import sys
import os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtCore, QtGui
#!/usr/bin/python
a1 = os.popen("date")
a1 = a1.read()
data = {'date':['%s'%a1,'a2','a3'], 'x1':['b1','b2','b3'], 'x2':['c1','c2','c3'], 'x3':['d1','d2','d3'], 'x4':['e1','e2','e3'], 'min':['f1','f2','f3'], 'x5':['g1','g2','g3'], 'x6':['h1','h2','h3']}
class MyTable(QTableWidget):
def __init__(self, data, *args):
QTableWidget.__init__(self, *args)
self.data = data
self.setmydata()
self.resizeColumnsToContents()
self.resizeRowsToContents()
def setmydata(self):
horHeaders = []
for n, key in enumerate(sorted(self.data.keys())):
horHeaders.append(key)
for m, item in enumerate(self.data[key]):
newitem = QTableWidgetItem(item)
self.setItem(m, n, newitem)
self.setHorizontalHeaderLabels(horHeaders)
def main(args):
app = QApplication(args)
table = MyTable(data, 5, 8)
table.show()
sys.exit(app.exec_())
if __name__=="__main__":
main(sys.argv)