QtGui.QPushButton.clicked.connect()带有接受参数的函数

时间:2016-04-16 14:44:44

标签: python-2.7 user-interface pyqt pyside

我想在单击QtGui.QPushButton时运行一个带参数的函数(例如!)。以下代码

my_func(int, str, int)

产生以下RuntimeError:my_btn = QtGui.QPushButton() my_btn.clicked.connect(my_func(my_int, my_str, my_second_int))

我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

使用connect时,只传递可调用函数

my_btn.clicked.connect(my_func)

在您的示例中,您在运行连接代码之前实际调用my_func函数。所以它试图连接从my_func返回的任何值,它不起作用。

您要做的是创建一个partial函数,该函数已经预先填充了部分或全部函数参数。 Python在标准库中有一个可以执行此操作的函数functools.partial

from functools import partial

my_btn.clicked.connect(partial(my_func, my_int, my_str, my_second_int))

这将创建一个部分函数,该函数将使用位置参数my_funcmy_intmy_str调用my_second_int,并且该部分函数已连接到按钮clicked信号。