" TypeError:原生Qt信号不可调用"使用自定义插槽

时间:2015-10-10 00:56:41

标签: python qt pyqt4 callable slots

环境

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

目标

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

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

尝试

我尝试过使用pyqtSlot() decorator但是当我运行代码时它会抛出:

NameError: name 'pyqtSlot' is not defined

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

from PyQt4 import QtCore, QtGui

我还试图将我的方法改为自己的包含调用方法的可调用类。

我为各种尝试获得的一般错误消息是:

TypeError: native Qt signal is not callable

问题

老实说,此时我几乎不知道该去哪里或者您可能需要哪些细节来诊断问题。谁能让我知道如何把它放在一起?

2 个答案:

答案 0 :(得分:6)

应从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)

答案 1 :(得分:0)

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