我想做什么:
我正在尝试制作一个实时TreeWidget来监控设备的速度和ETA。我在PyQt5中创建了一个非常基本的GUI(代码如下)。
我想获得第一列的实时时间(在同一单元格中每秒刷新一次),在第二列中,我将从websocket获取数据,每隔1000毫秒刷新数据第二列和第三列。
我已经做了什么:
我放了一个while循环来迭代第一列的数据(这很荒谬)。但是一旦while循环结束,就会显示最后一个值。这很好。我想用我的GUI连接这种 while循环并行方式。因此它可以实时获取数据。搜索到处都是,但我只得到了PyQt5中一个名为QDatastream的方法的提示,我不熟悉。
我想知道是否可以像我提到的那样在treewidget中查看实时数据。如果没有,请告诉我是否应该去探索QDatastream。
感谢您阅读我的问题。任何帮助将不胜感激。
代码:
from PyQt5 import QtCore, QtGui, QtWidgets
import time
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.treeWidget = QtWidgets.QTreeWidget(Form)
self.treeWidget.setGeometry(QtCore.QRect(10, 10, 381, 281))
self.treeWidget.setObjectName("treeWidget")
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.treeWidget.headerItem().setText(0, _translate("Form", "Time(s)"))
self.treeWidget.headerItem().setText(1, _translate("Form", "Speed"))
self.treeWidget.headerItem().setText(2, _translate("Form", "ETA"))
__sortingEnabled = self.treeWidget.isSortingEnabled()
self.treeWidget.setSortingEnabled(False)
x = 0
while x < 10:
self.treeWidget.topLevelItem(0).setText(0, _translate("MainWindow", str(x)))
x += 1
time.sleep(1)
self.treeWidget.topLevelItem(0).setText(1, _translate("Form", "s1"))
self.treeWidget.topLevelItem(0).setText(2, _translate("Form", "eta1"))
self.treeWidget.setSortingEnabled(__sortingEnabled)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())