PyQt5单发定时器:使用singleShot()方法实现延迟执行
发布时间:2024-01-01 03:31:58
PyQt5是一个用于创建图形用户界面(GUI)的Python模块,它提供了丰富的工具和组件来创建交互式的应用程序。PyQt5中的定时器可以实现延迟执行某个方法或代码块的功能。其中,singleShot()方法是一种简单的定时器,只会在一个特定的时间间隔之后执行一次。
下面是一个使用singleShot()方法的简单例子,展示了如何通过定时器实现延迟执行的功能。在该例子中,我们创建了一个基本的窗口,并在其中添加一个按钮。点击按钮后,延迟一秒后输出一条消息。
import sys
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Delayed Execution')
self.setGeometry(300, 300, 300, 200)
self.button = QPushButton('Click me!', self)
self.button.setGeometry(100, 50, 100, 30)
self.button.clicked.connect(self.delayedExecution)
self.label = QLabel(self)
self.label.setGeometry(100, 100, 200, 30)
self.label.setAlignment(Qt.AlignCenter)
def delayedExecution(self):
self.button.setEnabled(False) # 禁用按钮
self.label.setText('Waiting...')
QTimer.singleShot(1000, self.executeAfterDelay) # 延迟一秒后执行executeAfterDelay方法
def executeAfterDelay(self):
self.label.setText('Delayed execution finished.')
self.button.setEnabled(True) # 启用按钮
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
在上面的例子中,我们首先导入所需的模块,然后定义了一个继承自QMainWindow的Example类。在initUI()方法中,我们设置了窗口的标题和大小,并创建了一个按钮和一个标签。按钮的clicked信号与delayedExecution()方法相连,当点击按钮时,该方法将会被调用。
在delayedExecution()方法中,我们首先禁用按钮,并在标签中显示一条"Waiting..."的消息。然后,使用QTimer.singleShot()方法设定一个一秒的定时器,当定时器倒计时结束后,将会调用executeAfterDelay()方法。这个方法会在标签中显示一条"Delayed execution finished."的消息,并重新启用按钮。
最后,我们创建了一个QApplication实例,并显示了Example窗口。app.exec_()保持应用程序的事件循环,直到我们关闭程序窗口。
