我想在单击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))
。
我该如何做到这一点?
答案 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_func
,my_int
和my_str
调用my_second_int
,并且该部分函数已连接到按钮clicked
信号。