簡體   English   中英

如何實時更新 PyQt5 標簽?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM