如何解决如何实时更新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 举报,一经查实,本站将立刻删除。