PyQt New Style Signals&插槽 - 无法传递参数

时间:2013-06-20 08:08:16

标签: python-2.7 pyqt signals-slots

在旧式信号和插槽中,我能够将自己的参数传递给处理程序,就像这样。 (在这种情况下,我传递一个Widget和一个对self的引用)

obj.connect(form.tableScores,QtCore.SIGNAL("itemChanged(QTableWidgetItem*)"),lambda: itemChanged(form,obj))

唯一的缺点是我丢失了QTableWidgetItem数据,但是我能够通过form参数中的widget引用来获取它。关键是我需要访问这个方法给我的obj。

但是在新风格中我收到了错误。

form.tableScores.itemChanged.connect(itemChanged(form,obj))

我似乎只限于这种格式

form.tableScores.itemChanged.connect(itemChanged)

有没有办法可以在新风格的信号和插槽中传递我自己的参数,理想情况下还可以保留对QTableWidgetItem的引用?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用 functools 模块

示例:

import functools

然后您可以将参数用于:

form.tableScores.itemChanged.connect(functools.partial(itemChanged, param1, param2, param3, [...]))