私の問題は、チェックボックスがオンになっている場合はシーンを回転させ続け、チェックを外すとすぐにこの回転を停止したいということです。しかし、「回し続ける」は無限ループを意味します...
したがって、ループに入った後、プログラムは一種のフリーズ状態になり、「チェック解除」信号に反応しなくなります。このループを中断する方法はありますか? 以下は、関連するコードのスケルトンです。ありがとう!
class Draw(QGLWidget):
def __init__(...):
...
self.rotate=0
self.auto=False
def paintGL(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
glRotatef(self.rotate,0.0,0.0,1.0)
draw stuff...
glFlush()
def autoRotate(self,auto): # auto is an integer and used here as true/false
self.auto=auto
while self.auto:
self.rotate+=0.5
if self.rotate>360:
self.rotate-=360
self.updateGL()
if auto==False:
break
class SpiralWidgetDemo(QtGui.QMainWindow):
def __init__(self):
...
auto=QtGui.QCheckBox("Auto")
self.connect(auto,QtCore.SIGNAL("stateChanged(int)"),widget.autoRotate)