pyqt 一种延时方法

本文探讨了在PyQT中使用QTimer进行延时操作时遇到的问题,即多次触发后funcA函数会额外执行。作者通过两种方法对比,发现使用setSingleShot和timeout.connect的方式会导致funcA重复调用,而直接使用QTimer.singleShot则能按预期执行。这个问题对于理解PyQT中的定时器机制非常重要。

date: 2022-08-23 14:23
status: public
title: ‘pyqt 一种延时方法’


方法一

# 声明timer
timer = QtCore.QTimer()
timer.setSingleShot(True)
# 在需要的地方设置定时
timer.start(600)
# 到之间后
timer.timeout.connect(self.funcA)

但是实际测试发现个问题,在多次触发这个延时之后,funcA 会多执行一次。还不知道为什么。

-- trigger -- // 第一次触发
funcA
-- trigger -- // 第二次触发
funcA
funcA
-- trigger -- // 第三次触发,每触发一次 funcA 就多执行一次。
funcA
funcA
funcA
-- trigger --
funcA
funcA
funcA
funcA

方法二

QtCore.QTimer.singleShot(600, self.funcA)

这样得到的结果是符合预期的

-- trigger --
funcA
-- trigger --
funcA
-- trigger --
funcA
-- trigger --
funcA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值