Python 按下按钮时调用函数

Python 按下按钮时调用函数,python,function,button,pyqt,Python,Function,Button,Pyqt,当我单击btn\u brow\u 3时,我正试图调用函数function。我怎样才能做到这一点 运行以下代码时,我收到此错误消息: TypeError:connect()插槽参数应该是可调用的或不是“nonetype”的信号。 Qt信号可以具有参数,这些参数将被传递到它们所连接的插槽;例如,新值作为信号已更改的参数。因此,虽然可以使用带有参数的插槽,但在将信号连接到插槽时不能定义这些参数的实际值,因为它们将在发出信号时定义 为了在连接时定义参数,您可以使用一个附加函数,该函数只调用具有已定义参数

当我单击
btn\u brow\u 3
时,我正试图调用函数
function
。我怎样才能做到这一点

运行以下代码时,我收到此错误消息:
TypeError:connect()插槽参数应该是可调用的或不是“nonetype”的信号。


Qt信号可以具有参数,这些参数将被传递到它们所连接的插槽;例如,新值作为信号
已更改的参数。因此,虽然可以使用带有参数的插槽,但在将信号连接到插槽时不能定义这些参数的实际值,因为它们将在发出信号时定义

为了在连接时定义参数,您可以使用一个附加函数,该函数只调用具有已定义参数的原始函数:

def包装器():
职能(12)
定义功能(a):
打印“Hola mundo”+str(a)
[...]
btn_brow_4.单击。连接(包装器)
作为旁注:
wrapper
在这里不使用大括号:函数不被调用,只是作为参数传递给函数
connect
。在代码中,您调用了函数
function
,该函数不返回任何(
None
),该函数在原始代码中传递给
connect
,从而导致收到错误消息

要使其更清晰,还可以使用匿名函数:

btn\u brow\u 4.单击。连接(lambda:function(12))
注意,Qt也提供了实现这一点的方法,但是(至少对我来说)Python变体更容易阅读


编辑:更多信息:

您可以使用以下方法访问相同的内容:

self.connect(btn_brow_4,Qt.SIGNAL("clicked()"),self.callingFunction)

def callingFunction():
    function(12)
试试这个

def funcion(a):
 print "Hola mundo" + str(a)

[...]
btn_brow_4.clicked.connect(lambda: funcion(12))

我建议使用OP代码中使用的新型信号/插槽,而不是旧式变体。看见
def funcion(a):
 print "Hola mundo" + str(a)

[...]
btn_brow_4.clicked.connect(lambda: funcion(12))