Best Canvas for WxPython
Question: I am a Java programmer working on a project in Python and the latest version
of WxPython. In Java Swing, you can draw on JPanel elements by overriding
their paint method.

I am looking for a similar class in WxPython for a GUI application.

I saw this question here:

[Best canvas for drawing in
wxPython?](http://stackoverflow.com/questions/2327918/best-canvas-for-drawing-
in-wxpython)

but the fact that the projects are not being updated has me worried.

Three years later, is there anything else I should look into other than
FloatCanvas or OGL?

The end use case i drawing a sound waves at varying degrees of zoom.


Answer: Just use a `wx.Panel`.

Here is some documentation on the drawing context functions:

<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()
    

![enter image description here](http://i.stack.imgur.com/QYnCp.png)

