Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

The Environment

I am running an Anaconda environment with Python 3.4. I am using PyCharm as my IDE.

The Objective

I am trying to make a pyQt4 QPushButton connect to a custom function:

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

Attempts

I have tried using the pyqtSlot() decorator but when I run the code it throws:

NameError: name 'pyqtSlot' is not defined

I have used the following imports which should include that decorator:

from PyQt4 import QtCore, QtGui

I also attempted to change my method into its own callable class containing a call method.

The general error message that I'm getting for various attempts is this:

TypeError: native Qt signal is not callable

The Question

Honestly, at this point I have pretty much no idea where to go with this or what details you may need to diagnose the problem. Could anyone give me an idea how to put this together?

like image 244
Xorgon Avatar asked Oct 10 '15 00:10

Xorgon


2 Answers

pyqtSlot() should be imported from PyQt4.QtCore:

from PyQt4.QtCore import pyqtSlot

it can be also used as @QtCore.pyqtSlot() since you already import QtCore.

You have the error message TypeError: native Qt signal is not callable since the slot clicked should be connected without parentheses:

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

You can start from simple examples that you can find in PyQt4 package, for example examples/widgets/tetrix.py:

    startButton = QtGui.QPushButton("&Start")
    startButton.clicked.connect(self.board.start)
like image 146
Orest Hera Avatar answered Oct 23 '22 17:10

Orest Hera


object.signal().connect(slot()) should be replaced with object.signal.connect(slot)

like image 29
Anurag Singh Avatar answered Oct 23 '22 18:10

Anurag Singh