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判断、获取一张图片主色调的2个实例
Apr 10 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python中内建模块collections如何使用
May 27 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
Django中ORM的基本使用教程
Dec 22 Python
浅谈Python类的单继承相关知识
May 12 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
python缺失值填充方法示例代码
Dec 24 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/05/16 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
javascript 闭包疑问
2010/12/30 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
jquery操作select大全
2014/04/25 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
Angular2库初探
2017/03/01 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
Python ljust rjust center输出
2008/09/06 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
幼儿教师自我鉴定
2013/11/02 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
校庆接待方案
2014/03/18 职场文书
班主任对学生的评语
2014/04/26 职场文书
《恐龙》教学反思
2014/04/27 职场文书
献爱心活动总结
2014/05/07 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
党性分析材料格式
2014/12/19 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
工程合作意向书范本
2015/05/09 职场文书
九年级化学教学反思
2016/02/22 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL