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的Django框架中实现Hacker News的一些功能
Apr 17 Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
Python地图绘制实操详解
Mar 04 Python
python文件写入write()的操作
May 14 Python
PyQt5显示GIF图片的方法
Jun 17 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
深入php之规范编程命名小结
2013/05/15 PHP
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
JavaScript常用事件介绍
2019/01/21 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
详解python开发环境搭建
2016/12/16 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python3人脸识别的两种方法
2019/04/25 Python
Python字符串对象实现原理详解
2019/07/01 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
python 画条形图(柱状图)实例
2020/04/24 Python
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
县级文明单位申报材料
2014/05/23 职场文书
关于安全的标语
2014/06/10 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
亮剑观后感600字
2015/06/05 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
五年级作文之劳动作文
2019/11/12 职场文书