gpt4 book ai didi

python - 使用QThread定期更新一个QTableWidget pyqt

转载 作者:行者123 更新时间:2023-11-28 21:19:53 28 4
gpt4 key购买 nike

在我的应用程序中,我使用 API 调用获取记录,然后将数据动态添加到 QTableWidget。到目前为止,这是我的代码片段:

class TriageUI(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_TriageWindow()
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
self.ui.setupUi(self)
self.update_records()

def update_records(self):
#items are the results from the API fetch
items = json.loads(get_triage_queue(COOKIES, SERVER, PORT))
rows = len(items['objects'])
self.ui.tableWidget.setColumnCount(5)
self.ui.tableWidget.setRowCount(rows)
index = 0
column = 0
for j in items['objects']:
for key, value in j.iteritems():
f = QtGui.QTableWidgetItem(str(value))
self.ui.tableWidget.setItem(index, column, QtGui.QTableWidgetItem(f))
column = column + 1

但是,我希望能够定期(例如 15 秒后)对数据进行 API 调用,然后将结果中的任何新数据项添加到表中。我怎样才能做到这一点。

提前谢谢你。

最佳答案

这里有一个使用 PyQt4.QtCore.QTimer 重复调用类成员函数(可能是您的 update_records 函数)的示例。有时,解决问题比我们想象的要容易。

注意函数startstop。此功能使您可以随意启动和停止计时器。

from PyQt4 import QtGui as gui
from PyQt4 import QtCore as core


class Blinker(gui.QWidget):
def __init__(self, parent=None):
super(Blinker, self).__init__(parent)

self.label = gui.QLabel(self)
self.label.setFixedSize(200, 200)
self.layout = gui.QHBoxLayout(self)
self.layout.addWidget(self.label)

self.timer = core.QTimer(self)
self.timer.setInterval(1000) # Throw event timeout with an interval of 1000 milliseconds
self.timer.timeout.connect(self.blink) # each time timer counts a second, call self.blink
self.color_flag = True

def start(self):
self.timer.start()

def stop(self):
self.timer.stop()

@core.pyqtSlot()
def blink(self):
if self.color_flag:
self.label.setStyleSheet("background-color: blue;")
else:
self.label.setStyleSheet("background-color: yellow;")
self.color_flag = not self.color_flag


if __name__ == '__main__':
import sys
app = gui.QApplication(sys.argv)

w = Blinker()
w.show()
w.start()

sys.exit(app.exec_())

关于python - 使用QThread定期更新一个QTableWidget pyqt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23786340/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com