wxpython:如何在窗口恢复时重新绘制内容?
在我的基于wx.Frame的wxpython应用程序中,当发生某些事件时,我会在一个面板上画一些线条,这个过程是通过在需要的时候创建wx.ClientDC实例来完成的。唯一的问题是,如果窗口被最小化然后再恢复,这些线条就会消失!有没有什么方法可以重写,或者绑定某个事件,这样在窗口恢复时我就能调用我创建的绘图方法?
谢谢!
2 个回答
0
当窗口被恢复时,在某些平台上,它会通过EVT_PAINT处理器重新绘制。
解决办法比如在OnPaint()里重新画一遍相同的线条。或者可以把你画的内容先存起来。可以看看wxBufferedDC这个类。
1
你只需要在 wx.EVT_PAINT 这个事件上进行绘图,所以在面板的 init 方法中要绑定这个事件,比如:
self.Bind(wx.EVT_PAINT, self._onPaint)
在 _onPaint 方法中,使用 wx.PaintDC 来进行绘图,比如:
dc = wx.PaintDC(self)
dc.DrawLine(0,0,100,100)