次の PySide Qt Python の例を実行しようとしています (コードはこの質問の下部にあります)。
https://github.com/Deusdies/pythonbo/blob/master/06-sixthTutorial-moresignals.py
次のようなエラーが表示されます。
ASSERT: ファイル /tmp/pyside-gUBW/pyside-qt4.8+1.1.2/libpyside/signalmanager.cpp の「pyMethod」、444 行目
なぜこれが起こっているのか、私はMac OS X 10.8.3を使用してコードをそのまま実行しています。Python 2.7.4、qt、pyside を HomeBrew 経由でインストールしました。
どんな助けでも大歓迎です!
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class ZeroSpinBox(QSpinBox):
zeros = 0
def __init__(self, parent=None):
super(ZeroSpinBox, self).__init__(parent)
self.connect(self, SIGNAL("valueChanged(int)"), self.checkzero)
def checkzero(self):
if not self.value():
self.zeros += 1
self.nulls = 5
self.emit(SIGNAL("atZero"), self.zeros, self.nulls)
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
dial = QDial()
dial.setNotchesVisible(True)
zeroSpinBox = ZeroSpinBox()
layout = QHBoxLayout()
layout.addWidget(dial)
layout.addWidget(zeroSpinBox)
self.setLayout(layout)
self.connect(dial, SIGNAL("valueChanged(int)"), zeroSpinBox.setValue)
self.connect(zeroSpinBox, SIGNAL("valueChanged(int)"), dial.setValue)
self.connect(zeroSpinBox, SIGNAL("atZero"), self.announce)
self.setWindowTitle("Signals and Slots")
def announce(self, zeros, nulls):
print "Announcing!!!"
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
シグナルマネージャー.cpp
問題のある signalmanager.cpp ソース ファイルを含むリポジトリを次の場所でオンラインで見つけることができました。
https://github.com/jasonmccampbell/PySide/blob/master/libpyside/signalmanager.cpp#L444
444行目あたりからの抜粋です。
int SignalManager::callPythonMetaMethod(const QMetaMethod& method, void** args, PyObject* pyMethod, bool isShortCuit)
{
Q_ASSERT(pyMethod); // This is the line causing the exception?
Shiboken::GilState gil;
PyObject* pyArguments = 0;