1. ホーム
  2. python

[解決済み] 「カスタムスロットで「TypeError: ネイティブのQtシグナルは呼び出し可能ではありません。

2022-02-17 10:30:50

質問

環境について

Python 3.4でAnacondaの環境を動かしています。IDEとしてPyCharmを使用しています。

目的

pyQt4のQPushButtonをカスタム関数に接続させようとしています。

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

試行回数

を使ってみました。 pyqtSlot() デコレーター が、コードを実行すると投げてしまう。

NameError: name 'pyqtSlot' is not defined

そのデコレータを含むはずの以下のインポートを使用しました。

from PyQt4 import QtCore, QtGui

また、私のメソッドを呼び出しメソッドを含む独自の呼び出し可能なクラスに変更することも試みました。

いろいろ試行錯誤した結果、一般的なエラーメッセージはこんな感じ。

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)