wxPython: panel not fully painted

citronelu at yahoo.com citronelu at yahoo.com
Wed Jan 24 16:35:51 EST 2007


Hi,

I'm new to wxpython, and the following code is my first serious
attempt:


#~ start code
import wx

class MyPanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)
        self.parent = parent
        button = wx.Button(self, -1, "Refresh")
        button.SetPosition((100, 100))
        button.SetFocus()

        self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)

    def OnCloseMe(self, event):
        self.parent.f_redraw(self)
        pass


class MyFrame(wx.Frame):
    def __init__(
            self, parent, ID, title, pos=wx.DefaultPosition,
            size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE
            ):

        wx.Frame.__init__(self, parent, ID, title, pos, size, style)

    def f_redraw(self, kill_window):
        kill_window.Destroy()
        MyPanel(self, -1)
        #~ self.SendSizeEvent()


wxApp = wx.App()
f = MyFrame(None, -1, "App Title")
MyPanel(f, -1)
f.Show()
wxApp.MainLoop()


#~ end code


My problem is: when I press the "refresh" button, the new panel is
painted only as a 20x20 pixels square on the top right side of the
frame. If I resize the frame, the panel is repainted correctly (that's
why I inserted the self.SendSizeEvent() line - commented above).

Is there something I'm missing, or this is normal ?

I'm using python 2.4.3 and wxpython 2.8.1.1 unicode, on WinXP SP2.
Windows extensions are also installed.




More information about the Python-list mailing list