2015-10-10 23 views
2

環境「類型錯誤:原生Qt的信號是不可調用的」自定義插槽

我運行的蟒蛇環境與Python 3.4。我使用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 

問題

老實說,在這一點上我幾乎不知道去哪裏這個或者您可能需要哪些詳細信息來診斷問題。任何人都可以給我一個想法如何把它放在一起?

+0

如果您導入了'QtCore',那麼使用'QtCore.pyqtSlot'。此外,您不必調用'clicked',只需'button.clicked.connect(some_function)'。 – cdonts

+1

這裏不需要'pyqtSlot'裝飾器。只需從'clicked()'中刪除括號即可。 – ekhumoro

回答

2

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) 
+0

@ QtCore.pyqtSlot()修正了第一個錯誤,並從'clicked'中刪除括號修正了TypeError,我簡直不敢相信我錯過了。非常感謝你! – Xorgon