On Wed, 24 Jan 2007 13:35:51 -0800, citronelu wrote: > 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.
Consider using sizers, you'll need them anyway. They do such things for you, and many other things too. The help file has a good chapter on this: Working with sizers. Kind regards Morpheus -- http://mail.python.org/mailman/listinfo/python-list