欢迎访问宙启技术站
智能推送

使用PyQt5.QtCore.QTimer.singleShot()实现定时更新数据

发布时间:2023-12-23 17:41:25

PyQt5中的QTimer.singleShot()方法可以用于在指定的时间间隔后执行一个函数。该方法接受三个参数:时间间隔(以毫秒为单位)、要执行的函数和传递给函数的参数(可选)。当定时器触发时,函数将被执行。

下面是一个使用QTimer.singleShot()方法的例子:

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow
from PyQt5.QtCore import QTimer

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.label = QLabel(self)
        self.label.setGeometry(10, 10, 200, 30)

        self.counter = 0

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_data)
        self.timer.start(1000)  # 每1000毫秒触发一次定时器

    def update_data(self):
        self.counter += 1
        self.label.setText(f"Counter: {self.counter}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

在这个例子中,我们创建了一个继承自QMainWindow的自定义窗口类MainWindow。窗口中包含一个QLabel用于显示计数器的值。我们使用self.timer创建了一个定时器,并使用self.timer.timeout.connect()方法将定时器的timeout信号连接到self.update_data函数。self.timer.start(1000)方法启动了定时器,每1000毫秒触发一次定时器。

self.update_data函数在定时器触发时被执行,它将计数器的值加一,并使用self.label.setText()方法在标签中显示计数器的值。

最后,我们创建了一个PyQt5应用,并将自定义窗口类实例化并显示出来。在主事件循环中,应用程序将不断检查输入事件,并在需要时调用相应的事件处理程序。

当运行这段代码时,窗口将显示一个初始值为0的计数器,并且每秒钟会自动递增一次。