可选的信号参数

我有一个具有默认关键字参数的函数。我在实现这个时遇到了麻烦,因为我不断收到一个错误,如果我的信号有两个参数,那么我需要传递两个参数。有没有办法解决?


class Controller(QWidget):

    trigger = pyqtSignal(str, str)

    def __init__(self):

        self.trigger.connect(self.myfunc)


    @pyqtSlot(str, str)

    def function(argument, optional_argument=''):

         do something


c = Controller()

c.trigger.emit('Hello', 'World') # This works

c.trigger.emit('Hello')  # This fails and says I need 2 arguments


阿波罗的战车
浏览 91回答 1
1回答

喵喵时光机

除了重载信号支持的类型之外,您还必须使连接指向连接中的签名:import sysfrom PyQt5 import QtCoreclass 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python