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的Flask框架中@app.route的用法教程
Mar 31 Python
在Python中使用第三方模块的教程
Apr 27 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
简单了解python单例模式的几种写法
Jul 01 Python
简单了解python代码优化小技巧
Jul 08 Python
Python Django Cookie 简单用法解析
Aug 13 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
php创建sprite
2014/02/11 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
非主流的textarea自增长实现js代码
2011/12/20 Javascript
Js四则运算函数代码
2012/07/21 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
详解js类型判断
2018/05/22 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
python中删除某个元素的方法解析
2019/11/05 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
工业设计专业个人求职信范文
2013/12/28 职场文书
先进事迹报告会感言
2014/01/24 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
HTML基础详解(上)
2021/10/16 HTML / CSS
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏