微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何实时更新PyQt5标签?

如何解决如何实时更新PyQt5标签?

一切顺利,我目前正在使用GUI,该GUI每15秒更新一次。我对Python也很陌生,所以我正在寻找可以在这里找到的一些指导。

我从.txt文件获取数据,该文件每15秒更新一次,因此现在我尝试每15秒将这些数据输入到GUI中。它可以工作,但是运行几次后,我的提示符下出现了错误代码

QEventdispatcherWin32 :: registerTimer:无法创建计时器(当前进程已使用其所有系统允许的Window Manager对象的句柄。)

GUI仍将每15秒更新一次,但是该错误使我感到自己已经做错了。 我想知道是因为我继续在袖带循环中创建新计时器吗?

这是我的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_()

谢谢!

解决方法

可能是由于在每次执行“袖带”时都创建了一个新的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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。