Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否将参数传递给QTimer超时信号?_Python_Qt_Pyqt_Scheduled Tasks - Fatal编程技术网

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

Python 是否将参数传递给QTimer超时信号?,python,qt,pyqt,scheduled-tasks,Python,Qt,Pyqt,Scheduled Tasks,我正在使用Python和PySide(PyQt的替代方案)。我有一个在后台运行的应用程序,我想使用QTimer来安排一些要执行的任务 然而,我需要QTimer在我的程序中调用一个方法,但是这个方法需要“初始化参数”,它将指定这个方法应该做什么 我认为我需要将QTimer子类化并覆盖timeout或start方法,这是正确的吗?如果是的话,那我该怎么做?我几乎没有任何经验覆盖现有的方法,谷歌并没有带来很多结果(有一些C++,我不理解)。我已经设法做了一些事情(例如,我重写了start()方法,但是

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

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

我认为我需要将QTimer子类化并覆盖
timeout
start
方法,这是正确的吗?如果是的话,那我该怎么做?我几乎没有任何经验覆盖现有的方法,谷歌并没有带来很多结果(有一些C++,我不理解)。我已经设法做了一些事情(例如,我重写了
start()
方法,但是原始start方法的代码没有执行(可以理解),我不知道该代码应该是什么

还是有别的办法

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

初始化参数在变化吗?我可能会做一些涉及到绑定一些参数的事情,所以如果你有这个

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。

谢谢!你让我跳出框框思考,我一直在尝试通过QTimer传递参数,我没有想到非Qt方式。但是,如果我错了,请纠正我,但我相信你的代码有错误-应该是
functools.partial(onTimer,myInitParams)