Python - wxPython:使用wx.ClientDC绘制线,在最小化窗口后将消失

时间:2014-10-20 03:11:43

标签: python wxpython wxwidgets

我想在点击按钮后绘制一些线条。但是当我最小化窗口或在ScrolledWindow中滚动窗口时,所有绘图都将丢失。有没有办法保留它们?

以下是代码:

import wx

class Frame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, size=(640, 480))
        self.panel = wx.Panel(self, wx.ID_ANY)

        button = wx.Button(self.panel, id=wx.ID_ANY, label=u'Start Calculation', size=(160, 22))
        self.Bind(wx.EVT_BUTTON, self.OnButtonCalcuating, button)


    def OnButtonCalcuating(self, event):
        self.dc = wx.ClientDC(self.panel)
        self.dc.DrawLine(50, 60, 190, 60)


if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = Frame()
    frame.Show()
    app.MainLoop()

1 个答案:

答案 0 :(得分:2)

如果要在窗口中绘画,则必须为EVT_PAINT事件创建处理程序。你做的是,你画线,但就是这样。当窗口被重新绘制时,对你的线路一无所知。

看看这个: http://wiki.wxpython.org/VerySimpleDrawing