14. 定时器控件

news/2025/1/4 20:53:01/文章来源:https://www.cnblogs.com/FlurryHeart/p/18648757

一、定时器控件

  在 PySide6 中,如果需要周期性地执行某项操作,就可以使用 QTimer 类实现。QTimer 类表示计时器,它可以定期发射 timeout 信号,执行与信号连接的槽函数,实现自动完成某些功能。时间间隔的长度可以在 start() 方法中指定,以毫秒为单位。如果需要停止定时器,则需要使用 stop() 方法。

  我们可以在终端中使用 pip 安装 pyside6 模块。

pip install pyside6

  用 QTimer 类创建实例对象的方法如下:

QTimer(parent:QWidget=Noone)

  其中,parent窗口 或者 容器 类控件。QTimer 是不可见的,当父类删除时,定时器也同时删除。

  定时器的常用方法如下:

# 实例方法
setInterval(msec:int) -> None                                                           # 设置信号发送的时间间隔,单位毫秒
interval() -> int                                                                       # 获取信号发送的时间间隔,单位毫秒
isActive() -> bool                                                                      # 判断信号是否激活
remainingTime() -> int                                                                  # 获取据下次发送信号的时间,单位毫秒
setSingleShot(singleShot:bool) -> None                                                  # 设置定时器是否为单次发送
isSingleShot() -> bool                                                                  # 获取定时器是否为单次发送
setTimerType(atype:int) -> None                                                         # 设置定时器的类型
timerType() -> int                                                                      # 获取定时器的类型
timerId() -> int                                                                        # 获取定时器的ID# 槽方法
start() -> None                                                                         # 启动定时器
start(msec:int) -> None                                                                 # 经过msec毫秒后启动定时器
stop() -> None                                                                          # 停止定时器# 静态方法
singleShot(arg__1:int, Callable) -> None                                                # 经过msec毫米后,执行 调用Python的可执行函数Callable
singleShot(msec:int, receiver:QObject, member:bytes) -> None                            # 经过msec毫米后,执行 receiver的槽函数member
singleShot(msec:int, timerType:Qt.TimerType, receiver:QObject, member:bytes) -> None    # 经过msec毫米后,执行 receiver的槽函数member

  使用定时器的步骤一般是先建立定时器对象,用 setInterval(int) 方法设置定时器发送信号的时间间隔,然后将定时器的信号 imeout 与某个槽函数关联,最后用 start() 方法启动定时器。如果只需要定时器发送 1 次信号,可以设置 setSingleShot(bool) 为 True,否则将会连续不断地发送信号,可以用 stop() 方法停止定时器信号的发送。如果只是 1 次发送信号,也可以不用创建定时器对象,用定时器类的静态方法 singleShot() 直接连接某个控件的槽函数。如果定义了多个定时器,可以用 timeId() 方法获取定时器的编号。

  定时器的精度与系统和硬件有关,用 setTimerType(Qt.TimerType) 方法可以设置定时器的精度,其中参数 Qt.TimerType 的取值如下:

Qt.TimerType.PreciseTimer        # 精确的定时器,保持1毫秒精度
Qt.TimerType.CoarseTimer         # 精确度差的定时器,精度保持在时间间隔的5%范围内
Qt.TimerType.VeryCoarseTimer     # 精度度非常差的定时器,精度是500毫秒

  定时器只有一个信号 timeout(),每经过固定的时间间隔发送一次信号,或者只发送一次信号。

timeout()        # 定时时间到发射信号
import sysfrom PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtCore import QTimerclass MyWidget(QWidget):def __init__(self):super().__init__()self.count = 0# 1.创建一个定时器对象self.timer = QTimer()# 2.启动定时器self.timer.start(1000)# 3.关联信号self.timer.timeout.connect(self.print_text)def print_text(self):self.count += 1if self.count <= 10:print(self.count)else:print("定时任务结束")# 关闭定时器self.timer.stop()# 退出程序sys.exit()if __name__ == "__main__":# 1.创建一个QApplication类的实例app = QApplication(sys.argv)# 2.创建一个窗口window = MyWidget()# 3.进入程序的主循环并通过exit()函数确保主循环安全结束sys.exit(app.exec())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863082.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA 2024 安装激活详细使用教程(激活至2026,实测是永久,亲测!)

开发工具推荐:IntelliJ IDEA 2024 安装激活详细使用教程(激活至2026,实际上永久,亲测!)申明:本教程 IntelliJ IDEA补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 !卸载老版本 IDEA 首先,如果小伙伴的…

文件及文件夹的对比工具:Beyond Compare v5.0修改版(无需手动激活)

前言 Beyond Compare是一款文件及文件夹(目录)的对比工具。Beyond Compare不仅可以快速比较出两个目录的不同,还可以比较每个文件的内容,而且可以任意显示比较结果。Beyond Compare程序内建了文件浏览器,方便您对文件、文件夹、压缩包、FTP网站之间的差异比对以及资料同步…

LGV 引理

无。LGV 引理 概述 参考 OI Wiki Lindstrm–Gessel–Viennot lemma,即 LGV 引理,可以用来处理有向无环图上不相交路径计数等问题。 引理定义方阵 \(M\)。结论是: \[\det(M) = \sum_{S:A\to B} (-1)^{sgn(\sigma(S))} \prod_{i=1}^n \omega(S_i) \]其中 \(S:A\to B\) 表示不相…

【python复习随记】

缩进要对多行语句:使用反斜杠\ total = item_one + \item_two + \item_three在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \ total = [item_one, item_two, item_three,item_four, item_five]复数complex a+bj : a实部 b虚部 j虚数单位 字符串 (1)多行字符串:三引号( …

windows11连接蓝牙耳机声音差的解决方案

前期在使用Windows 10时,我的XM3通常是有Hands Free和正常输出两个通道的,走Hands Free通道则会触发通话模式,可以自己调整以适应不同的需求。 但是升级到Windows 11后,发现只剩下了一个耳机输出通道,但是音质直接降为通话音质,多次升降级无果,调整音质选项也没有作用。…

【政策解读】《电力监控系统安全防护规定》今日施行!

《电力监控系统安全防护规定》旨在提升电力监控系统的安全性和可靠性,确保电力系统的安全稳定运行。今日起施行,主要内容: 1、总则:《电力监控系统安全防护规定》旨在强化电力监控系统安全防护,保障电力系统安全稳定运行。规定适用于中国境内的电力监控系统运营者及相关单…

同硕计算机专业考研必备:统考+课程学习资料大放送!

同硕计算机,统考,课程学习,源码资料考研之路,道阻且长。对于计算机专业的学子来说,备考之路更是充满挑战。为了帮助广大考生高效备战,我在此精心整理了一套同硕计算机专业统考及课程学习资料,并免费分享给大家! 一、资料亮点:1. 同硕-计算机专业-统考历年真题,全部免…

【有源码】医院挂号系统+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:医院挂号系统。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 管理后台-截图 前端-截图视频演示 https://githubs.xyz/show/329.mp4二. 系统概述 【…

基于图像形态学处理和凸包分析法的指尖检测matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)测试样本1: 测试样本2: 测试样本3: 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)%提取手部轮廓坐标 handxy=func_find_hand_pxy(Im0_bw,Im0,Im0edge);figure; imshow(Im0); t…

云锵投资 2024 年收益统计及 12 月简报

年度统计量化基金小幅度跑输业绩基准; 量化股票由于平均1.8倍杠杆,加上有一定超额,所以最终跑出了 24.54%; 今年我个人在2月底部时加仓比较多,所以持股数增加了近一半; 由于有股指期货的持仓,权益类资产的整体杠杆较高,所以权益类资产今年获取60.12%的收益。 季报摘要行…

显卡危机的解决方案,全面解析ToDesk云电脑:服务配置与应用场景探索

ToDesk云电脑是一款集成了高性能计算资源的云端服务,旨在为用户提供便捷、高效、安全的计算体验。无论是游戏玩家、设计师还是企业用户,都能通过ToDesk云电脑享受到强大的计算能力和灵活的资源配置。ToDesk云电脑以其强大的性能、灵活的服务和优质的用户体验,正在迅速赢得市…

【有源码】周边旅游平台系统+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:流浪宠物管理系统。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 管理后台-截图前端-截图 视频演示 https://githubs.xyz/show/327.mp4二. 系统概述…