wxpythonでパネルに簡単な絵(線、円など)を描きたいと思います。どこかで見つけたサンプルコードを修正しました。正常に動作しますが、ウィンドウを最小化するか、別のウィンドウに切り替えて元に戻すまでです。その後、無限ループで再描画を開始します。
これは起こるべきですか?そうでない場合、無限ループを防ぐ方法はありますか?
私が見つけた1つの解決策は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()