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

1 投票
1 回答
1071 浏览
提问于 2025-04-28 11:38

我想在点击按钮后画一些线条。但是当我把窗口缩小,或者在一个可以滚动的窗口里滚动时,所有的画的线条都会消失。有办法让它们保持在那吗?

下面是代码:

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 个回答

2

如果你想在你的窗口上画东西,你需要为EVT_PAINT事件创建一个处理器。简单来说,就是你画了一条线,但这并不是全部。当窗口重新绘制的时候,它就忘记了你画的那条线。

你可以看看这个链接了解更多: http://wiki.wxpython.org/VerySimpleDrawing

撰写回答