1

这个例子有效:(这里我的函数没有输入参数)

    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"))

请注意,第一个示例正在运行,唯一的问题(我猜)是向我的函数发送参数(当我在函数中时,我必须知道组合框的名称)。

请指教...谢谢!祝你有美好的一天,海豚

4

3 回答 3

2

参考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 ?

于 2018-12-26T06:56:17.293 回答
0

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

QtCore.QObject.connect(from_object, QtCore.SIGNAL("nameOfSignal(QString)"), self.my_handler)
于 2012-06-27T11:31:43.037 回答
0

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

from functools import partial

QtCore.QObject.connect(ComboJobType1_1, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")) ,partial(self.InputChanged, "ComboJobType1_1"))
于 2018-12-26T16:19:24.813 回答