2

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

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

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

还是有其他方法?

4

1 回答 1

6

但是,我需要 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...

如果您想根据应用程序的某些当前条件提供不同的初始化参数,您可能会更好地使用基于特定项目何时更改的自定义信号/插槽。或者保持我在其他地方修改 initParams 的“当前”状态。

于 2012-11-02T20:00:31.050 回答