Mon problème est que je veux continuer à tourner la scène si la case est cochée, et arrêter cette rotation immédiatement une fois qu'elle n'est pas cochée. Cependant, "continuer à tourner" signifie une boucle infinie ...Comment décocher une case pour arrêter le dessin infini dans pyqt?
Donc, après être entré dans la boucle, le programme devient un peu gelé et ne réagit plus à mon signal "décocher". Y a-t-il un moyen d'interrompre cette boucle? Ce qui suit est le squelette du code associé. Merci!
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)
Votre réponse est très précise, problème résolu. Je vous remercie! – mayasky