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编写百度贴吧的简单爬虫
Apr 02 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
Python实现的栈(Stack)
Jan 26 Python
python模仿网页版微信发送消息功能
Feb 24 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
python爬虫要用到的库总结
Jul 28 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 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 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
写好自荐信的要点
2013/11/06 职场文书
个人自我鉴定
2013/11/07 职场文书
大学生新闻专业个人自我评价
2013/11/12 职场文书
公司董事长职责
2013/12/12 职场文书
营销计划书范文
2015/01/17 职场文书
老公婚前保证书
2015/02/28 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js