新闻动态

PyQt5中QTimer定时器的实例代码

发布日期:2022-03-27 08:42 | 文章来源:源码中国

如果要在应用程序中周期性地进行某项操作,比如周期性地检测主机的CPU值,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时器。要使用定时器,需要先创建一个QTimer实例,将其timeout信号连接到相应的槽,并调用start()。然后定时器会以恒定的间隔发出timeout信号,当窗口控件收到timeout信号后,它就会停止这个定时器。

一、QTimer类中的常用方法

方法 描述
start(milliseconds) 启动或重新启动定时器,时间间隔为毫秒。如果定时器已经运行,它将被停止并重新启动。如果singleShot信号为真,定时器将仅被激活一次
Stop() 停止定时器

二、QTimer类中的常用信号

信号 描述
singleShot 在给定的时间间隔后调用一个槽函数时发射此信号
timeout 当定时器超时时发射此信号

三、QTimer的使用

示例1:

import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Demo(QWidget):
 count = 0
 def __init__(self):
  super().__init__()
  self.setGeometry(100, 50, 500, 400)
  self.setWindowTitle('QTimer')
  self.list = QListWidget()
  self.label = QLabel('显示当前时间')
  self.start = QPushButton('开始')
  self.end = QPushButton('结束')
  layout = QGridLayout()
  #初始化定时器
  self.timer = QTimer(self)
  self.timer.timeout.connect(self.showTime)
  self.start.clicked.connect(self.startTimer)
  self.end.clicked.connect(self.endTimer)
  layout.addWidget(self.label,0,0,1,2)
  layout.addWidget(self.start,1,0)
  layout.addWidget(self.end,1,1)
  self.setLayout(layout)
 def showTime(self):
  #获取系统现在的时间
  time = QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm:ss dddd')
  self.label.setText(time)
 def startTimer(self):
  #设置时间间隔并启动定时器
  self.timer.start(1000)
  self.start.setEnabled(False)
  self.end.setEnabled(True)
 def endTimer(self):
  #关闭定时器
  self.timer.stop()
  self.start.setEnabled(True)
  self.end.setEnabled(False)
if __name__ == "__main__":
 app = QApplication(sys.argv)
 form = Demo()
 form.show()
 sys.exit(app.exec_())

运行效果如下:


示例2:

import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
if __name__ == "__main__":
 app = QApplication(sys.argv)
 label = QLabel('<font color=blue size=20><b>PyQt5,窗口5秒后消失</b></font>')
 #无边框窗口
 label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)
 label.show()
 #设置5秒后自动退出
 QTimer.singleShot(5000,app.quit)
 sys.exit(app.exec_())

运行效果如下:

PyQt5 QTimer计数到特定的秒数

我正在使用python创建程序,并且正在使用pyqt。我目前正在使用QTimer,我想每秒钟打印一次“ timer works”,并在5秒钟后停止打印。这是我的代码:

timers = []
def thread_func():
 print("Thread works")
 timer = QtCore.QTimer()
 timer.timeout.connect(timer_func)
 timer.start(1000)
 print(timer.remainingTime())
 print(timer.isActive())
 timers.append(timer)
def timer_func():
 print("Timer works")

解决方案

以下是一个简单的演示,显示了如何创建在固定数量的超时后停止计时的计时器。

from PyQt5 import QtCore
def start_timer(slot, count=1, interval=1000):
 counter = 0
 def handler():
  nonlocal counter
  counter += 1
  slot(counter)
  if counter >= count:
timer.stop()
timer.deleteLater()
 timer = QtCore.QTimer()
 timer.timeout.connect(handler)
 timer.start(interval)
def timer_func(count):
 print('Timer:', count)
 if count >= 5:
  QtCore.QCoreApplication.quit()
app = QtCore.QCoreApplication([])
start_timer(timer_func, 5)
app.exec_()

到此这篇关于PyQt5中QTimer定时器的实例代码的文章就介绍到这了,更多相关PyQt5 QTimer定时器内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

美国稳定服务器

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部