[英]How to update PyQt5 label in real time?
大家好,我目前正在開發一個每 15 秒更新一次的 GUI。 我對 Python 也很陌生,所以我正在尋找一些可以在這里獲得的指導。
我從每 15 秒更新一次的 .txt 文件中獲取我的數據,所以現在我嘗試每 15 秒將這些數據輸入到 GUI 中。 它有效,但在運行幾次后,我的提示出現了錯誤代碼,
QEventDispatcherWin32::registerTimer:無法創建計時器(當前進程已使用其所有系統允許的窗口管理器對象句柄。)
GUI 仍會每 15 秒更新一次,但該錯誤讓我覺得我已經做錯了。 我想知道是不是因為我一直在我的 Cuff 循環中創建新的計時器?
這是我的 GUI 的編碼。
from PyQt5 import QtCore, QtGui, QtWidgets, uic
import sys
import time
class dataProcessing(QtWidgets.QMainWindow):
def __init__(self):
super(dataProcessing,self).__init__()
uic.loadUi('CuffingEfficiency2.ui',self)
self.show()
self.Cuff()
def Cuff(self):
with open('Cuffing.txt', 'r') as r:
l1,l2,l3,l4,l5,l6 = [float(i) for i in r.readlines()]
self.label_8.setText(str(l1))
self.label_9.setText(str(l3))
self.label_12.setText(str(l5))
self.label_13.setText(str(l2))
self.label_10.setText(str(l4))
self.label_11.setText(str(l6))
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.Cuff)
self.timer.start(15000)
app = QtWidgets.QApplication(sys.argv)
window = dataProcessing()
app.exec_()
謝謝!
警告可能是因為您在每次執行“Cuff”時都創建了一個新的 QTimer,在您的情況下,單個 QTimer 就足夠了:
class dataProcessing(QtWidgets.QMainWindow):
def __init__(self):
super(dataProcessing, self).__init__()
uic.loadUi("CuffingEfficiency2.ui", self)
self.show()
timer = QtCore.QTimer(self, timeout=self.Cuff, interval=15 * 1000)
timer.start()
self.Cuff()
def Cuff(self):
labels = (
self.label_8,
self.label_9,
self.label_12,
self.label_13,
self.label_10,
self.label_11,
)
with open("Cuffing.txt", "r") as r:
for label, line in zip(
labels,
r.readlines(),
):
try:
label.setNum(float(line))
except ValueError:
pass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.