此示例有效:(此处我的函数没有输入参数)
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的名称)。
请建议...... 谢谢! 祝你好运, 海豚
答案 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"))