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 while 函数及while和for的区别
Sep 07 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
python全局变量引用与修改过程解析
Jan 07 Python
用python解压分析jar包实例
Jan 16 Python
Python运行DLL文件的方法
Jan 17 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
使用python客户端访问impala的操作方式
Mar 28 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 Python
python利用appium实现手机APP自动化的示例
Jan 26 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实现获取域名的方法小结
2014/11/05 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
python的Template使用指南
2014/09/11 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
django页面跳转问题及注意事项
2019/07/18 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
文职个人求职信范文
2013/09/23 职场文书
工商管理专业实习生自我鉴定
2013/09/29 职场文书
建议书怎么写
2014/03/12 职场文书
党员承诺书范文
2014/05/19 职场文书
体育教师求职信
2014/05/24 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
物业保安辞职信
2015/05/12 职场文书
单位同意报考证明
2015/06/17 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
java版 简单三子棋游戏
2022/05/04 Java/Android