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中的迭代器漫谈
Feb 03 Python
python创建关联数组(字典)的方法
May 04 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python机器学习之神经网络实现
Oct 13 Python
python简单实现AES加密和解密
Mar 28 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python3实现微型的web服务器
Sep 03 Python
Python pip 常用命令汇总
Oct 19 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
Python使用openpyxl复制整张sheet
Mar 24 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
js实现3D旋转效果
2020/08/18 Javascript
Python实现的求解最小公倍数算法示例
2018/05/03 Python
Python实现网站表单提交和模板
2019/01/15 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python批量处理txt文件的实例代码
2020/01/13 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
Python3读写ini配置文件的示例
2020/11/06 Python
Python高并发和多线程有什么关系
2020/11/14 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
烹饪自我鉴定
2014/03/01 职场文书
百年校庆节目主持词
2014/03/27 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2014年电工工作总结
2014/11/20 职场文书
审美与表现自我评价
2015/03/09 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL