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中enumerate函数用法实例分析
May 20 Python
Python中字符串对齐方法介绍
May 21 Python
以windows service方式运行Python程序的方法
Jun 03 Python
带你了解python装饰器
Jun 15 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Python文件时间操作步骤代码详解
Apr 13 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
Pandas把dataframe或series转换成list的方法
Jun 14 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
如何使用python写截屏小工具
Sep 29 Python
Python识别验证码的实现示例
Sep 30 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网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
js变量以及其作用域详解
2020/07/18 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
详解js中==与===的区别
2017/01/08 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Python 列表list使用介绍
2014/11/30 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
numpy中矩阵合并的实例
2018/06/15 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
SQL面试题
2013/12/09 面试题
业务员岗位职责
2013/11/16 职场文书
总账会计岗位职责
2014/03/13 职场文书
股票投资建议书
2014/05/19 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
市场营销工作计划书
2014/09/15 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
python 中yaml文件用法大全
2021/07/04 Python