我想在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()
答案 0 :(得分:1)
在函数OnDraw
中创建局部变量dc
而不是使用属性(dc
而不是self.dc
)。