Python QTableWidget-应用程序运行时刷新单元格

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时

我有一个应用程序,它可以检查日期(linux)并将这个“日期”放入单元格“a1”。 当应用程序运行时,如何在一分钟后刷新单元格“a1”? 将来我将刷新下面列出的所有单元格,但在开始时最好知道如何刷新第一个单元格;] 应用程序将在linux(而不是windows)下运行


您可能对使用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)