Python 为什么Qt信号也链接到class connect方法?

Python 为什么Qt信号也链接到class connect方法?,python,pyside,Python,Pyside,我遇到了一个奇怪的错误,虽然我能克服它,但我想知道是否有人知道这里发生了什么。如果我设置了一个signal,并且有一个名为connect的方法,那么signals connect方法将被class one覆盖 当我使用connect方法将UI链接到函数时,我花了很多时间才弄明白,这绝对不是python行为,所以我的主要问题是为什么会发生这种情况 下面是一个导致错误的示例PyQt signal connect()正好取1个参数(给定4个): 如果您提供connect3个参数输入并返回True,则信

我遇到了一个奇怪的错误,虽然我能克服它,但我想知道是否有人知道这里发生了什么。如果我设置了一个signal,并且有一个名为
connect
的方法,那么signals connect方法将被class one覆盖

当我使用
connect
方法将UI链接到函数时,我花了很多时间才弄明白,这绝对不是python行为,所以我的主要问题是为什么会发生这种情况

下面是一个导致错误的示例
PyQt signal connect()正好取1个参数(给定4个)

如果您提供
connect
3个参数输入并返回
True
,则信号正常。

尝试使用以下方法调试:

class MainWindow(QtWidgets.QMainWindow):
    testSignal = QtCore.Signal()

    def __init__(self, parent=None, **kwargs):
        super(MainWindow, self).__init__(parent, **kwargs)
        self.testSignal.connect(self.debug)

    def debug(self, *args, **kwargs):
        print("got", args, "and", kwargs)

所以你可以看到,什么值被传递给你的信号处理器
debug

问题不是信号返回什么,而是我不能使用
main window.connect
或者它覆盖
QtCore.signal.connect
,这看起来很奇怪,pyside就是这样工作的。如果您认为它是错误的,那么在这里报告它是没有意义的:您需要与pyside开发人员进行讨论。
class MainWindow(QtWidgets.QMainWindow):
    testSignal = QtCore.Signal()

    def __init__(self, parent=None, **kwargs):
        super(MainWindow, self).__init__(parent, **kwargs)
        self.testSignal.connect(self.debug)

    def debug(self, *args, **kwargs):
        print("got", args, "and", kwargs)