Python+pyQT向连接的信号函数发送参数

2024-05-01 21:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

在QtCore.QObject.connect(组合作业类型1,QtCore.信号(从utf8(“currentIndexChanged(QString)”),self.InputChanged(“ComboJobType1\u 1”))

请注意,第一个例子是有效的,唯一的问题(我猜)是发送一个参数到我的函数(我必须知道组合框的名称,当我在函数中)。在

请建议。。。 谢谢您! 祝你今天愉快, 海豚


Tags: 函数self类型参数signalconnect作业例子
3条回答

参考号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(把它转换成functionref而不是execute?在

另一种方法是导入部分函数来将参数传递给slot函数。在

from functools import partial

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

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

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

相关问题 更多 >