将参数传递给QTimer超时信号?

时间:2012-11-02 19:44:51

标签: python qt pyqt scheduled-tasks

我正在使用Python和PySide(PyQt替代方案)。我有一个在后台运行的应用程序,我想使用QTimer来安排一些要执行的任务。

但是,我需要QTimer在我的程序中调用一个方法,但是这个方法需要“初始化参数”来指定方法究竟应该做什么。

我是否认为我需要继承QTimer并覆盖timeoutstart方法?如果是这样,那么哪一个,我将如何进行呢?我几乎没有覆盖现有方法的经验,谷歌搜索没有发现很多结果(有些人用C ++我不明白)。我已经设法做了一些事情(例如我覆盖了start()方法,但是原始启动方法的代码没有执行(可以理解),我不知道该代码应该是什么。

或者还有其他方法吗?

1 个答案:

答案 0 :(得分:3)

  

但是,我需要QTimer在我的程序中调用一个方法,但是这个方法需要“初始化参数”来指定方法究竟应该做什么。

初始化参数是否在变化?我可能会做一些涉及functools.partial的事情来绑定一些参数,所以如果你有这个

import functools
from PySide.QtCore import QTimer

def onTimer(initParams):
    # use initParams
    # your code here...

myInitParams = "Init!"
timerCallback = functools.partial(onTimer, initParams=myInitParams)
myTimer = QTimer()
myTimer.timeout.connect(timerCallback)
myTimer.start( 1000) #once a sec

#Your QApplication goes below...

如果您想根据应用程序的某些当前条件提供不同的 init参数,您可能最好根据特定项目的更改时间使用自定义信号/插槽。或者维护“当前”状态是我在其他地方修改initParams。