python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
作者:jia666666 发布时间:2021-01-04 21:56:00
标签:python,PyQt5,时间
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_())
运行效果图
代码分析
首先初始化一个定时器,把定时器的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_())
运行效果如图
代码分析
弹出的窗口会在10秒后消失,模仿程序的启动界面,将弹出的窗口设置为无边框
#设置无边框窗口
label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)
使用QTimer设置时间间隔,10秒后退出程序
#设置10秒后自动退出
QTimer.singleShot(10000,app.quit)
本文详细介绍了PyQt5时间控件QTimer详细使用方法与实例,更多关于PyQt5时间控件QTimer方面的知识请查看下面的相关链接
来源:https://blog.csdn.net/jia666666/article/details/81672344
0
投稿
猜你喜欢
- run() 方法并不启动一个新线程,就是在主线程中调用了一个普通函数而已。start() 方法是启动一个子线程,线程名就是自己定义的name
- 原来sql还有个stuff的函数,很强悍。 一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4
- 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Pyt
- SQL Server服务器的配置选项属于那种人们了解较少且经常误用的选项。当一个技术支持人员要求你按照某种方式调整一个选项、而另一个技术支持
- 在自然语言处理(NLP)领域,文本相似度计算是一个常见的任务。本文将介绍如何使用Python计算文本之间的相似度,涵盖了余弦相似度、Jacc
- Insert 和 Update假设现在你要把下面的数据插入到数据库中.ID = 3TheDate=mktime(0,0,0,8,31,200
- 笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做
- 本文实例为大家分享了Python实现滑雪小游戏的具体代码,供大家参考,具体内容如下源码分享:import sysimport cfgimpo
- 我在程序首端添加了On Error Resume Next ,以更好地处理执行时引起的错误,但在数据库访问中引出了麻烦,因为我在一个查询操作
- 最近听了张江老师的深度学习课程,用Pytorch实现神经网络预测,之前做Titanic生存率预测的时候稍微了解过Tensorflow,听说T
- ISNULL 使用指定的替换值替换 NULL。 &nb
- 这两天一直在做课件,我个人一直不太喜欢PPT这个东西……能不用就不用,我个人特别崇尚极简风。谁让我们是程序员呢,所以就爱上了Jupyter写
- 我们都知道python的版本不同,在使用的时候就有所区别。鉴于我们推荐小伙伴们选择python3版本,所以这方面的区别了解的不是很多。就拿_
- 首先去官网下载两个架包链接如下:官网链接第一步:将两个架包解压到同一个database目录下。如截图所示:第二步:打开setup应用程序打开
- 一、前言相关知识来自《python算法设计与分析》。初级排序算法是指几种较为基础且容易理解的排序算法。初级排序算法包括插入排序、选择排序和冒
- 你是一位交互设计师吗?告诉我,你具体做些什么?我是做网站设计的?听起来不够专业。我是做网页设计的,听起来……你们是做界面的……恩,好吧,我勉
- 旋转椭圆实例代码:import matplotlib.pyplot as pltimport numpy as npfrom matplot
- 阅读上一篇:微软建议的ASP性能优化28条守则(2) 技巧 5:不要将数据库连接缓存在 Application 或 Session 对象中
- 这次讨论一下关于select元素的一个问题,其实很早以前我就碰到过关于select元素的问题,这次做网站又被问到同样的问题,就是:一般div
- 见以下两个文件:showimage.asp Change the HTTP header