PySide6中QTimer定时器无法循环触发 绑定的槽函数仅执行一次
问题原因
核心错误出在信号绑定逻辑:self.timer.timeout.connect(self.pp())
- Qt信号的
connect方法要求传入可调用对象作为触发信号时的执行回调。你在self.pp后加了括号,会在执行到这行代码时直接调用pp函数,把函数的返回值(你的pp方法无显式返回,默认返回None)传递给connect,相当于没有给timeout信号绑定任何有效回调。 - 你观察到的唯一一次
LOL输出,是__init__初始化阶段直接调用pp产生的,和定时器触发无关。控制台输出True说明定时器本身正常运行,但触发timeout信号时无回调可执行,因此没有后续输出。
修复方案
去掉connect参数里pp后的括号,直接传入函数对象本身即可:
# 原错误代码 self.timer.timeout.connect(self.pp()) # 修改后正确代码 self.timer.timeout.connect(self.pp)
修改后重新运行,即可实现每隔1秒触发一次pp函数的预期效果。
内容的提问来源于stack exchange,提问作者Hosam Hashem
相关产品推荐
相关产品推荐

