"TypeError: native Qt signal is not callable" with custom slots

"TypeError: native Qt signal is not callable" with custom slots

环境

我正在 运行 使用 Python 3.4 构建 Anaconda 环境。我正在使用 PyCharm 作为我的 IDE。

Objective

我正在尝试使 pyQt4 QPushButton 连接到自定义函数:

button.clicked().connect([method reference or whatever])

尝试次数

我已经尝试使用 pyqtSlot() decorator 但是当我 运行 它抛出的代码:

NameError: name 'pyqtSlot' is not defined

我使用了以下应该包含该装饰器的导入:

from PyQt4 import QtCore, QtGui

我还尝试将我的方法更改为包含调用方法的自己的可调用 class。

我在各种尝试中收到的一般错误消息是这样的:

TypeError: native Qt signal is not callable

问题

老实说,在这一点上我几乎不知道该去哪里,或者您可能需要哪些细节来诊断问题。谁能告诉我如何将它们放在一起?

pyqtSlot() 应从 PyQt4.QtCore:

导入
from PyQt4.QtCore import pyqtSlot

它也可以用作 @QtCore.pyqtSlot() 因为你已经导入了 QtCore.

您收到错误消息 TypeError: native Qt signal is not callable,因为插槽 clicked 应该在没有括号的情况下连接:

button.clicked.connect([method reference or whatever])

您可以从 PyQt4 包中的简单示例开始,例如 examples/widgets/tetrix.py:

    startButton = QtGui.QPushButton("&Start")
    startButton.clicked.connect(self.board.start)

object.signal().connect(slot()) 应替换为 object.signal.connect(slot)