python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例


Posted in Python onFebruary 26, 2020

QTimer控件介绍

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

当窗口的控件收到Timeout信号后,他就会停止这个定时器,这是在图形用户界面中实现复杂工作的一个典型用法,随着技术的进步,多线程在越来越多的平台上被使用,QTimer对象会被替代掉

QTimer类中的常用方法

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

QTimer类中常用的信号

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

QTimer的使用实例

import sys
from PyQt5.QtWidgets import QWidget,QPushButton,QApplication,QListWidget,QGridLayout,QLabel
from PyQt5.QtCore import QTimer,QDateTime

class WinForm(QWidget):
  def __init__(self,parent=None):
    super(WinForm, self).__init__(parent)
    #设置标题
    self.setWindowTitle('QTimer demo')

    #实例化一些控件
    self.listFile=QListWidget()
    self.lable=QLabel('显示当前时间')
    self.startBtn=QPushButton('开始')
    self.endBtn=QPushButton('结束')

    #栅格布局
    layout=QGridLayout()

    #初始化一个定时器
    self.timer=QTimer()
    #定时器结束,触发showTime方法
    self.timer.timeout.connect(self.showTime)

    #添加控件到栅格指定位置
    layout.addWidget(self.lable,0,0,1,2)
    layout.addWidget(self.startBtn,1,0)
    layout.addWidget(self.endBtn,1,1)

    #开始结束按钮点击触发相应的槽函数
    self.startBtn.clicked.connect(self.startTimer)
    self.endBtn.clicked.connect(self.endTimer)

    #设置布局方式
    self.setLayout(layout)
  def showTime(self):
    #获取系统当前时间
    time=QDateTime.currentDateTime()
    #设置系统时间的显示格式
    timeDisplay=time.toString('yyyy-MM-dd hh:mm:ss dddd')
    #在标签上显示时间
    self.lable.setText(timeDisplay)
  def startTimer(self):
    #设置时间间隔并启动定时器
    self.timer.start(1000)
    #设置开始按钮不可点击,结束按钮可点击
    self.startBtn.setEnabled(False)
    self.endBtn.setEnabled(True)

  def endTimer(self):
    #停止定时器
    self.timer.stop()
    #结束按钮不可点击,开始按钮可以点击
    self.startBtn.setEnabled(True)
    self.endBtn.setEnabled(False)
if __name__ == '__main__':
  app=QApplication(sys.argv)
  form=WinForm()
  form.show()
  sys.exit(app.exec_())

运行效果图

python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例

代码分析

首先初始化一个定时器,把定时器的timeout信号与showTime()槽函数连接起来

self.timer=QTimer(self)
self.timer.timeout.connect(self.showTime)

使用连接的槽函数显示当前时间,并在标签上显示系统当前的时间

def showTime(self):
    #获取系统当前时间
    time=QDateTime.currentDateTime()
    #设置系统时间的显示格式
    timeDisplay=time.toString('yyyy-MM-dd hh:mm:ss dddd')
    #在标签上显示时间
    self.lable.setText(timeDisplay)

单击开始按钮,启动定时器,并使按钮失效

#设置时间间隔并启动定时器
    self.timer.start(1000)
    #设置开始按钮不可点击,结束按钮可点击
    self.startBtn.setEnabled(False)
    self.endBtn.setEnabled(True)

单击结束按钮,停止定时器,并使按钮失效

#停止定时器
    self.timer.stop()
    #结束按钮不可点击,开始按钮可以点击
    self.startBtn.setEnabled(True)
    self.endBtn.setEnabled(False)

QTimer小应用实例

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

if __name__ == '__main__':
  app=QApplication(sys.argv)
  #设置标签以及文本内容
  label=QLabel('<font color=red size=128><b>Hello PyQt,窗口会在10秒后消失!</b></font>')
  #设置无边框窗口
  label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)

  label.show()

  #设置10秒后自动退出
  QTimer.singleShot(10000,app.quit)

  sys.exit(app.exec_())

运行效果如图

python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例

代码分析

弹出的窗口会在10秒后消失,模仿程序的启动界面,将弹出的窗口设置为无边框

#设置无边框窗口
label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)

使用QTimer设置时间间隔,10秒后退出程序

#设置10秒后自动退出
QTimer.singleShot(10000,app.quit)

本文详细介绍了PyQt5时间控件QTimer详细使用方法与实例,更多关于PyQt5时间控件QTimer方面的知识请查看下面的相关链接

Python 相关文章推荐
Python的一些用法分享
Oct 07 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
基于Python的OCR实现示例
Apr 03 Python
keras导入weights方式
Jun 12 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
python 如何调用远程接口
Sep 11 Python
Python colormap库的安装和使用详情
Oct 06 Python
Python 图片处理库exifread详解
Feb 25 Python
python单向链表实例详解
May 25 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 #Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 #Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 #Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 #Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 #Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 #Python
基于Python数据结构之递归与回溯搜索
Feb 26 #Python
You might like
合格的PHP程序员必备技能
2015/11/13 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python计算一个序列的平均值的方法
2015/07/11 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
python机器学习之KNN分类算法
2018/08/29 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
办公室年终个人自我评价
2013/10/28 职场文书
服装机修工岗位职责
2013/12/26 职场文书
党校学习思想汇报
2014/01/06 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
春游踏青活动方案
2014/08/14 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
2015年底工作总结范文
2015/05/15 职场文书
飞屋环游记观后感
2015/06/08 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
导游词之五台山
2019/10/11 职场文书