"Rapid Gui Programming with Python and Qt"와 관련하여 신호/슬롯 프로젝트에 문제가 있습니다. 저자 코드를 내 자신과 비교할 코드를 다운로드했고, 모두 똑같아 보이지만 파생 된 스핀 상자 클래스에서 신호를 내면 python이 충돌합니다.PySide 방출 신호로 인해 파이썬이 충돌합니다.
이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 self.value() == 0:
self.zeros += 1
self.emit(SIGNAL("atzero"), self.zeros)
class Form(QDialog):
def __init__(self, parent= None):
super(Form, self).__init__(parent)
dial = QDial()
dial.setNotchesVisible(True)
spinbox = ZeroSpinBox()
spinbox.setRange(0,200)
dial.setRange(0,200)
layout = QHBoxLayout()
layout.addWidget(dial)
layout.addWidget(spinbox)
self.setLayout(layout)
self.connect(dial, SIGNAL("valueChanged(int)"), spinbox, SLOT("setValue(int)"))
self.connect(spinbox, SIGNAL("valueChanged(int)"), dial, SLOT("setValue(int)"))
self.connect(spinbox, SIGNAL("atzero"), self.announce)
self.setWindowTitle("Signals and Slots Part 2")
def announce(self, zeros):
print "ZeroSpinBox has been at zero %d times" % zeros
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
spinbox가 다운이 제로가 될 때 내 문제가 발생하면 checkzero (자기) 메소드가합니다 (ZeroSpinBox 클래스의)는 self.zeros가 + = 1 개 라인 호출됩니다 : 여기에 내가 가지고있는 전체 코드입니다 좋아, 다음 방출 라인 창에서 Python.exe가 추락했다고보고합니다. 내가 얻는 오류는 "python.exe가 작동을 멈췄습니다"이고 콘솔에 "프로세스가 종료 코드 -1073741819로 끝났습니다"라고 표시됩니다.
왜 이런 일이 발생하는지 알고 싶습니다. 이것은 파이썬 2.7.2 및 PySide가있는 PyQT4입니다.
방출하고, 동일한 것을 시도한 다른 프로그램을 시도 ... – Mike