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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
详解Python的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python输出各行命令详解
Feb 01 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
python保存文件方法小结
Jul 27 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
Python类继承和多态原理解析
Feb 05 Python
Python实现手绘图效果实例分享
Jul 22 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
php,ajax实现分页
2008/03/27 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
python类定义的讲解
2013/11/01 Python
Python常用模块介绍
2014/11/21 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
为什么要有struct关键字
2012/05/08 面试题
语文教学感言
2014/02/06 职场文书
小学中秋节活动方案
2014/02/06 职场文书
升国旗仪式主持词
2014/03/19 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
2014年药房工作总结
2014/11/22 职场文书
委托书格式范文
2015/01/28 职场文书
python基础之匿名函数详解
2021/04/21 Python
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android