【发布时间】:2021-08-22 05:01:51
【问题描述】:
我想构建一个显示信息的 GUI,它每 10-100 毫秒更新一次。我试图通过设置 Qtimer.start(100) 将其实现到 QTimer 示例中,但它每秒只更新一次。怎样才能做到每秒刷新一次以上的GUI呢?我还尝试了手动 QWidget.update() 和 QTimer.setInterval(100) 没有效果。有没有更好的解决方案?
import sys
from python_qt_binding.QtWidgets import QWidget,QPushButton,QApplication,QListWidget,QGridLayout,QLabel
from python_qt_binding.QtCore import Qt, QTimer,QDateTime
class RobolabWidget(QWidget):
def __init__(self,parent=None):
super(RobolabWidget, self).__init__(parent)
self.setWindowTitle('QTimer example')
self.listFile=QListWidget()
self.label=QLabel('Label')
self.startBtn=QPushButton('Start')
self.endBtn=QPushButton('Stop')
layout=QGridLayout()
self.timer=QTimer()
self.timer.setTimerType(Qt.PreciseTimer)
self.timer.timeout.connect(self.showTime)
layout.addWidget(self.label,0,0,1,2)
self.timer.start(100)
self.setLayout(layout)
def showTime(self):
time=QDateTime.currentDateTime()
timeDisplay=time.toString('hh:mm:ss:ms')
self.label.setText(timeDisplay)
【问题讨论】:
-
代码对我来说看起来不错...运行 python 脚本会出现什么错误?
-
我没有重现那个错误,你的操作系统是什么?尝试在
self.label.setText(timeDisplay)之后添加self.label.repaint() -
我没有收到错误。显示时间的标签不是每 100 毫秒更新一次,而是每秒更新一次。 self.label.repaint() 也无济于事。我在 Ubuntu 18.04 上工作。背景是我想用 ROS 构建一个控制和监控机器人的仪表板。 GUI 以 rqt 插件的形式实现。
标签: python qt pyqt4 qwidget qtimer