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

PyQt5.QtCore.QTimer定时器实现任务执行完成后关闭应用

发布时间:2024-01-02 08:12:50

使用PyQt5中的QTimer类可以实现定时器功能。该类可以创建一个定时器对象,并设置定时器的时间间隔和触发事件。在任务执行完成后,我们可以设定一个定时器,在定时器触发后关闭应用。

以下是一个使用QTimer定时器实现任务执行完成后关闭应用的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
from PyQt5.QtCore import QTimer


def task():
    # 执行任务的函数
    print("Task executed.")


def close_app():
    # 关闭应用的函数
    print("Closing application.")
    app.quit()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 创建一个QWidget作为主窗口
    window = QWidget()
    layout = QVBoxLayout()
    label = QLabel("Hello World!")
    layout.addWidget(label)
    window.setLayout(layout)
    window.show()

    # 创建一个定时器对象
    timer = QTimer()

    # 设置定时器的时间间隔,单位为毫秒。在该时间间隔后,定时器会触发timeout()信号。
    timer.setInterval(5000)

    # 连接定时器的timeout()信号到任务执行函数
    timer.timeout.connect(task)

    # 连接定时器的timeout()信号到关闭应用函数
    timer.timeout.connect(close_app)

    # 启动定时器
    timer.start()

    sys.exit(app.exec_())

在上面的示例代码中,我们首先创建一个应用,然后创建一个QWidget作为主窗口,并向其中添加了一个QLabel用于显示文本。接着创建了一个QTimer对象,并设定了定时器的时间间隔为5000毫秒(即5秒)。然后,我们连接了定时器的timeout()信号到任务执行函数task()和关闭应用函数close_app()。最后,启动了定时器并进入应用的事件循环。

当定时器触发timeout()信号时,会依次执行任务执行函数task()和关闭应用函数close_app()。在本例中,我们在任务执行函数中只简单地打印了一行文本,而在关闭应用函数中调用了app.quit()方法来关闭应用。

需要注意的是,定时器对象是在MainWindow或者某个QObject的子对象中创建的。定时器对象或者子对象的析构函数会自动销毁定时器对象,因此不必手动删除。

希望上述示例能够帮助您理解如何使用PyQt5中的QTimer定时器来实现任务完成后关闭应用。