我想在 wxpython 的面板上画一些简单的图画(线、圆等)。我修改了在某处找到的示例代码。它工作正常,但直到我最小化窗口或切换到另一个窗口并返回。然后它开始无限循环重新绘制。
这甚至应该发生吗?如果没有,有什么办法可以防止无限循环?
我发现的一种解决方案是使用 wx.Timer,但它只是导致了具有可调节间隔的相同循环。
import math
import wx
class DrawPanel(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent,title='Drawing on panel')
self.Bind(wx.EVT_PAINT,self.OnDraw)
def OnDraw(self,event=None):
self.dc = wx.PaintDC(self)
self.dc.Clear()
self.dc.SetPen(wx.Pen(wx.BLACK,1.5))
i0 = 1
for i in range(2,1000,1):
i = i/10.0
self.dc.DrawLine(i0,200*math.sin(i0/10)+200,
i,200*math.sin(i/10)+200)
i0 = i
if __name__ == '__main__':
aplication = wx.App()
ram = DrawPanel(parent=None)
ram.Show()
aplication.MainLoop()