我正在使用OpenGL和wxPython创建一个可导航的3D用户界面的项目。
但是,OnPaint()
函数在主循环中似乎没有被连续调用。这使得我的界面无法不断更新。该功能仅称为“我在窗口中拖动”。例如:当我按下箭头键时,仅当我在窗口周围拖动时,窗口中的对象才会移动。
我将代码简化为这些代码行。有人可以帮我使OnPaint()
函数不断地打印出许多“ HI”,而无需在窗口周围拖动吗?
if __name__ == "__main__":
app = MyApp()
app.MainLoop()
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame()
frame.Show()
return True
class MyFrame(wx.Frame):
def __init__(self):
self.size = (1000, 700)
wx.Frame.__init__(self, None, title ="wx", size=self.size)
self.canvas = MyCanvas(self)
class MyCanvas(GLCanvas):
def __init__(self, parent):
GLCanvas.__init__(self, parent, -1, size=(1000, 700))
self.Bind(wx.EVT_PAINT, self.OnPaint)
def OnPaint(self, event):
print("HI")
答案 0 :(得分:2)
.Refresh()
可能会强制重绘wx.Window
或wx.Frame
之类的GLCanvas
。
例如您可以使用wx.IdleEvent
触发画布进行连续刷新。
class MyFrame(wx.Frame):
def __init__(self):
self.size = (1000, 700)
wx.Frame.__init__(self, None, title ="wx", size=self.size)
self.canvas = MyCanvas(self)
self.Bind(wx.EVT_IDLE, self.OnIdle)
def OnIdle(self, event):
self.Refresh() # refresh self and all its children
#self.canvas.Refresh() # refresh self.canvas