WxPython的最佳画布

tha*_*guy 4 python wxpython

我是一名Java程序员,从事Python项目和最新版本的WxPython.在Java Swing中,您可以通过覆盖其paint方法来绘制JPanel元素.

我在WxPython中寻找一个类似的类用于GUI应用程序.

我在这里看到这个问题:

在wxPython中绘制最佳画布?

但项目没有更新的事实令我担心.

三年后,除了FloatCanvas或OGL之外还有什么我应该看的吗?

最终用例我以不同的变焦程度绘制声波.

Fog*_*ird 8

只需使用一个wx.Panel.

以下是有关绘图上下文功能的一些文档:

http://docs.wxwidgets.org/stable/wx_wxdc.html

http://www.wxpython.org/docs/api/wx.DC-class.html

import wx

class View(wx.Panel):
    def __init__(self, parent):
        super(View, self).__init__(parent)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.Bind(wx.EVT_SIZE, self.on_size)
        self.Bind(wx.EVT_PAINT, self.on_paint)
    def on_size(self, event):
        event.Skip()
        self.Refresh()
    def on_paint(self, event):
        w, h = self.GetClientSize()
        dc = wx.AutoBufferedPaintDC(self)
        dc.Clear()
        dc.DrawLine(0, 0, w, h)
        dc.SetPen(wx.Pen(wx.BLACK, 5))
        dc.DrawCircle(w / 2, h / 2, 100)

class Frame(wx.Frame):
    def __init__(self):
        super(Frame, self).__init__(None)
        self.SetTitle('My Title')
        self.SetClientSize((500, 500))
        self.Center()
        self.view = View(self)

def main():
    app = wx.App(False)
    frame = Frame()
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述