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框架中request对象的用法
Jun 02 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
python自定义异常实例详解
Jul 11 Python
详解用python实现简单的遗传算法
Jan 02 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
python定向爬取淘宝商品价格
Feb 27 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
python实现跨年表白神器--你值得拥有
Jan 04 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 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启动以及telnet命令详解
2013/06/28 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
Angularjs上传图片实例详解
2017/08/06 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
大学生自荐信
2013/12/11 职场文书
董事长秘书职责
2014/01/31 职场文书
孔繁森观后感
2015/06/10 职场文书
赞助商致辞
2015/07/30 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
python程序的组织结构详解
2021/12/06 Python
Python3的进程和线程你了解吗
2022/03/16 Python