Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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/7/user-interface/2.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 2.7 QtGui.QPushButton.clicked.connect(),函数接受参数_Python 2.7_User Interface_Pyqt_Pyside - Fatal编程技术网

Python 2.7 QtGui.QPushButton.clicked.connect(),函数接受参数

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) 在您的示例中,您实际上是在运行连

我希望在单击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_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的解决方案更简单。