【问题标题】:connect function in pyqt5 does not workpyqt5中的连接功能不起作用
【发布时间】:2018-08-25 05:16:48
【问题描述】:

我最近从pyside 移动到pyqt5 并且出现了问题。我在网上查了一下,显然,它已经发生在使用pyqt4 并转移到pyqt5 的人身上。但是,它并没有真正帮助......我尝试在Qobject 之后添加pyqtSignal,但它仍然无法正常工作。请帮忙。 这些是我的代码行:

QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"),Dialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Dialog.reject)

这就是我运行它时出现的内容:

AttributeError: type object 'QObject' has no attribute 'connect'

【问题讨论】:

    标签: python-3.x pyqt pyside


    【解决方案1】:

    from the docs:

    connect(slot[, type=PyQt5.QtCore.Qt.AutoConnection[, no_receiver_check=False]])
    

    将信号连接到插槽。如果连接失败,将引发异常。 参数:

    • slot – 要连接的插槽,可以是 Python 可调用信号或其他绑定信号。
    • type – 要建立的连接类型。
    • no_receiver_check – 禁止检查底层 C++ 接收器实例是否仍然存在并传递信号。

    你的例子:

    self.buttonBox.accepted.connect(Dialog.accept) # pyqt5
    

    QtCore.QObject.connect(self.buttonBox.rejected, Dialog.reject) # pyqt4

    顺便说一句,“Dialog”听起来像一个类,你可能想连接到一个实例,否则考虑用小写前字母命名你的实例...

    【讨论】:

    • 您好,谢谢。您所说的未经测试的内容实际上有效。但是,您所做的测试不起作用......就像以前一样:AttributeError:类型对象'QObject'没有属性'connect'(我确实像你说的那样添加了接受。
    • @AliciaBelhassen。 pyqt5 中不能使用QObject.connect 连接信号的方式。您必须使用self.buttonBox.accepted.connect(Dialog.accept)。我建议您阅读以下内容:Differences Between PyQt4 and PyQt5.
    猜你喜欢
    • 2017-10-11
    • 2023-03-30
    • 1970-01-01
    • 2017-12-13
    • 2019-07-05
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多