Python 2.7 QtGui.QPushButton.clicked.connect(),函数接受参数
我希望在单击QtGui.QPushButton时运行一个函数,该函数使用参数例如my_funcint、str、int。下面的代码Python 2.7 QtGui.QPushButton.clicked.connect(),函数接受参数,python-2.7,user-interface,pyqt,pyside,Python 2.7,User Interface,Pyqt,Pyside,我希望在单击QtGui.QPushButton时运行一个函数,该函数使用参数例如my_funcint、str、int。下面的代码 my_btn = QtGui.QPushButton() my_btn.clicked.connect(my_func(my_int, my_str, my_second_int)) 产生以下运行时错误:连接失败 如何实现这一点?使用connect时,只传递可调用函数 my_btn.clicked.connect(my_func) 在您的示例中,您实际上是在运行连
my_btn = QtGui.QPushButton()
my_btn.clicked.connect(my_func(my_int, my_str, my_second_int))
产生以下运行时错误:连接失败
如何实现这一点?使用connect时,只传递可调用函数
my_btn.clicked.connect(my_func)
在您的示例中,您实际上是在运行连接代码之前调用my_func函数。所以它试图连接从我的函数返回的任何值,但它不起作用
您要做的是创建一个分部函数,这是一个已经预先填充了部分或全部函数参数的函数。Python在标准库中有一个函数,名为functools.partial
这将创建一个分部函数,该函数将使用位置参数my_int、my_str和my_second_int调用my_func,并且该分部函数连接到按钮单击信号。使用connect时,仅传递可调用函数
my_btn.clicked.connect(my_func)
在您的示例中,您实际上是在运行连接代码之前调用my_func函数。所以它试图连接从我的函数返回的任何值,但它不起作用
您要做的是创建一个分部函数,这是一个已经预先填充了部分或全部函数参数的函数。Python在标准库中有一个函数,名为functools.partial
这将创建一个分部函数,该函数将使用位置参数my_int、my_str和my_second_int调用my_func,该分部函数连接到按钮单击信号。my_btn.clicked.connectlambda:my_funcmy_int、my_str、my_second_int。在表中使用按钮时,使用lambda对我不起作用,似乎连接插槽保留了上一条记录的参数。my_btn.clicked.connectlambda:my_funcmy_int,my_str,my_second_int。当使用表中的按钮时,使用lambda对我不起作用,似乎连接插槽保留了上一条记录的参数。我接受了这个答案,因为它解释了为什么我所做的事情不起作用,但我认为Ekhumaro的解决方案更简单。我接受了这个答案,因为它包括了一个解释,说明了为什么我所做的不起作用,但我认为Ekhumaro的解决方案更简单。