为了账号安全,请及时绑定邮箱和手机立即绑定

可选的信号参数

可选的信号参数

阿波罗的战车 2021-08-05 15:04:19
我有一个具有默认关键字参数的函数。我在实现这个时遇到了麻烦,因为我不断收到一个错误,如果我的信号有两个参数,那么我需要传递两个参数。有没有办法解决?class Controller(QWidget):    trigger = pyqtSignal(str, str)    def __init__(self):        self.trigger.connect(self.myfunc)    @pyqtSlot(str, str)    def function(argument, optional_argument=''):         do somethingc = Controller()c.trigger.emit('Hello', 'World') # This worksc.trigger.emit('Hello')  # This fails and says I need 2 arguments
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

除了重载信号支持的类型之外,您还必须使连接指向连接中的签名:


import sys

from PyQt5 import QtCore



class Controller(QtCore.QObject):

    trigger = QtCore.pyqtSignal([str], [str, str])


    def __init__(self):

        super(Controller, self).__init__()

        self.trigger[str].connect(self.function)

        self.trigger[str, str].connect(self.function)


    @QtCore.pyqtSlot(str)

    @QtCore.pyqtSlot(str, str)

    def function(self, argument,  optional_argument=''):

        print(argument, optional_argument)



def main():

    app = QtCore.QCoreApplication(sys.argv)

    c = Controller()

    c.trigger[str].emit('Hello')

    c.trigger[str, str].emit('Hello', 'World')

    QtCore.QTimer.singleShot(100, QtCore.QCoreApplication.quit)

    sys.exit(app.exec_())



if __name__ == "__main__":

     main()


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信