PyQt5之QTimer定时器

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

一、QTimer类中的常用方法

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

二、QTimer类中的常用信号

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

三、QTimer的使用

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_())

运行效果如下:

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定时器如果要在应用程序中周期性地进行某项操作,比如周期性地检测主机的CPU值,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时器。要使用定时器,需要先创建一个QTimer实例,将其timeout信号连接到相应的槽,并调用start()。然后定时器会以恒定的间隔发出timeout信号,当窗口控件收到timeout信号后,它就会停止这个定时器。一、QTimer类中的常用方法方法描述start(milliseconds)启动或重新启动定时
定时器的操作方法有两种: 方法一:利用每个对象包含的timerEvent函数 方法二:利用定时器模块 需要from PyQt5.QtCore import QTimer 方法一:利用每个对象包含的timerEvent函数 from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushBu...
【项目亲测有效】【python-QTimer定时器】【方法二】解决同位置创建不同提示语,提示数秒后取消提示,出现与其它提示语重叠,如何解决?(只有一个QTimer定时器时)
一般来说,应用都是单线程的,但单线程有一些缺点,例如,有一个线程比较耗时,像有些算法执行起来时间较长,程序就会出现卡顿,此时用户就有可能关闭这个程序。解决这个问题的方法就涉及到了多线程。其中计时器模块QTimer一个计时器模块就设计到多线程技术。 关于QTimer的使用,我们一开始要创建一个QTimer的实例,将timeout信号连接到相应的槽,再调用start()。定时器就会以设定好的间隔发出t...
线程可以用来处理一些耗时的操作,而定时可以在耗时的操作中处理一些瞬时操作,比如刷新UI,程序可能略显复杂,主要是因为自从学了信号与槽之后不管写啥控件都习惯用信号与槽传递数据,那种收发式的感觉真的很爽 import sys from PyQt5.QtWidgets import QWidget, QFormLayout, QLineEdit, QVBoxLayout, QApplication,...
方法一:利用每个对象包含的timerEvent函数 方法二:利用定时器模块 需要 from PyQt5.QtCore import QTimer from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton from PyQt5.QtCore import * import sys class myobject(QObject): def timerEvent(self, evt): #重写对象的定时器函数 一、基础知识 1.QTimer简介 PyQt5QTimer类为计时器提供了高级编程接口。 要使用它,请创建一个QTimer,将其超时信号连接到适当的插槽,然后调用start()。 从那时起,它将以恒定的时间间隔发出超时信号。 2.常用函数说明 1. QT Designer设计UI 复制“ pPyQt5快速上手基础篇4-lineEdit输入框数据显示label和LC
一般情况下,应用程序都是单线程运行的,但是对GUI程序来说,单线程有时候满足不了要求,但是对于一些特殊情况:比如一个耗时较长的操作,运行过程会有卡顿让用户以为程序出错而把程序关闭或是系统本身认为程序运行出错而自动关闭程序。这个时候就需要用到多线程的知识。一般来说,多线程技术主要涉及以下三种方法: 1.利用计时器模块QTimer 2.使用多线程模块QThrea... from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import time class MyTimer(QWidget): def __init__(self): super().__init__() ... self.timer.timeout.connect(self.showTime) self.pushButton.clicked.connect(self.startTime) self.pushButton_2.clicked.connect(self.endTime) def showTime(self): time = QDateTime.currentDateTime() time_display = t..