Python 如何取消选中复选框以停止pyqt中的无限绘制?
我的问题是,如果选中该复选框,我希望继续旋转场景,并在取消选中该复选框后立即停止旋转。然而,“保持旋转”意味着一个无限循环 因此,在进入循环后,程序会被冻结,不再响应我的“取消选中”信号。有没有办法中断这个循环?下面是相关代码的框架。 谢谢Python 如何取消选中复选框以停止pyqt中的无限绘制?,python,pyqt,pyopengl,Python,Pyqt,Pyopengl,我的问题是,如果选中该复选框,我希望继续旋转场景,并在取消选中该复选框后立即停止旋转。然而,“保持旋转”意味着一个无限循环 因此,在进入循环后,程序会被冻结,不再响应我的“取消选中”信号。有没有办法中断这个循环?下面是相关代码的框架。 谢谢 不能将其实现为循环。这被定义为中断程序的交互,因为它阻止Qt应用程序的“主循环”运行 将绘图代码放入事件处理程序(如重画事件),并使用计时器以固定的间隔(例如10/s)生成事件 class Draw(QGLWidget): def __ini
不能将其实现为循环。这被定义为中断程序的交互,因为它阻止Qt应用程序的“主循环”运行 将绘图代码放入事件处理程序(如重画事件),并使用计时器以固定的间隔(例如10/s)生成事件
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)