私は非常に奇妙な問題を抱えています。QCheckBox がチェックされるたびに、予想どおり drawall が呼び出されます。ただし、 drawall が終了すると、完全にハングします。クリックしたときに drawall (バージョン 2) を直接呼び出してみましたが、結果は同じです。
scene = QGraphicsScene(0, 0, 500, 500)
class SurrogateBeat(QGraphicsItem):
def __init__(self,beat,top):
super(SurrogateBeat, self).__init__()
print "Init"
class Test(QWidget):
def __init__(self):
self.drawAll = QCheckBox("Draw all frames on screen",self)
self.drawAll.stateChanged.connect(self.onDrawAllClicked)
def onDrawAllClicked(self): #Version 1
QTimer.singleShot(0, self.drawall)
def onDrawAllClicked(self): #Version 2 (neither work)
self.drawall()
def drawall(self):
if self.drawAll.checkState() == Qt.CheckState.Checked:
self.surrogates=[]
for b in range(0,len(self.item.beats)):
print "Loop"
surrogate = SurrogateBeat(b, self.item)
scene.addItem(surrogate)
self.surrogates.append(surrogate)
scene.update()
print "Update"
ループが 16 回出力され、SurrogateBeat のinitが出力されるため呼び出されますが、「Update」が出力された後、プログラムがハングします。