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编码时应该注意的几个情况
Mar 04 Python
python3图片转换二进制存入mysql
Dec 06 Python
python连接mysql调用存储过程示例
Mar 05 Python
python实现带验证码网站的自动登陆实现代码
Jan 12 Python
python实现的系统实用log类实例
Jun 30 Python
Python Socket使用实例
Dec 18 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python实现12306火车票抢票系统
Jul 04 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
python实现杨辉三角的几种方法代码实例
Mar 02 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
第一个无线电台是由谁发明的
2021/03/01 无线电
请php正则走开
2008/03/15 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
python操作redis方法总结
2018/06/06 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
听课评语大全
2014/04/30 职场文书
服务承诺书范文
2014/05/19 职场文书
网络技术专业求职信
2014/07/13 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
新教师教学工作总结
2015/08/14 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL
详解SQL报错盲注
2022/07/23 SQL Server