Python + pyQT - 将参数发送到连接的Signal函数

时间:2012-06-27 09:56:45

标签: python function parameters combobox pyqt

此示例有效:(此处我的函数没有输入参数)

    QtCore.QObject.connect(ComboJobType1_1, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")) ,self.InputChanged())

但是,我必须发送一个参数,所以我尝试这样做:(更新我的函数以期望一个参数):

QtCore.QObject.connect(ComboJobType1_1,QtCore.SIGNAL(_fromUtf8(“currentIndexChanged(QString)”)),self.InputChanged(“ComboJobType1_1”))

请注意第一个例子正常工作,唯一的问题(我猜)是向我的函数发送一个参数(我在函数中时必须知道comboBox的名称)。

请建议...... 谢谢! 祝你好运, 海豚

3 个答案:

答案 0 :(得分:0)

您需要提供发射对象(“from_object”)和插槽处理程序(“self.my_handler”):

QtCore.QObject.connect(from_object, QtCore.SIGNAL("nameOfSignal(QString)"), self.my_handler)

答案 1 :(得分:0)

ref https://eli.thegreenplace.net/2011/04/25/passing-extra-arguments-to-pyqt-slot

    button1.clicked.connect(lambda: self.on_button(1))
    button2.clicked.connect(lambda: self.on_button(2))

def on_button(self, n):
    print('Button {0} clicked'.format(n))

为我工作,给它一个简单的lambda(将其转换为funciton ref而不是execute吗?

答案 2 :(得分:0)

另一种可以导入部分函数以将参数传递给插槽函数的方法。

from functools import partial

QtCore.QObject.connect(ComboJobType1_1, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")) ,partial(self.InputChanged, "ComboJobType1_1"))