none wrote: > wxGlade created a simple Frame with a panel a sizer and 3 wxControls , > saticText, TextCtrl, and a Button. > > The resulting code works fine. > > Now the problem. > I wish to make a separate class derrived from wxPanel that has the sized > and controls as above. It jusst won't work > > > <code id="gladeGen" class="works_ok"> > #!/usr/bin/env python > # -*- coding: ISO-8859-1 -*- > # generated by wxGlade 0.4cvs on Thu Oct 11 13:26:19 2007 > > import wx > > class MyFrameOne(wx.Frame): > def __init__(self, *args, **kwds): > # begin wxGlade: MyFrameOne.__init__ > kwds["style"] = wx.DEFAULT_FRAME_STYLE > wx.Frame.__init__(self, *args, **kwds) > self.panel = wx.Panel(self, -1) > self.staticbox = wx.StaticBox(self.panel, -1, "StaticBox") > self.label = wx.StaticText(self.panel, -1, "Field Name") > self.textBox = wx.TextCtrl(self.panel, -1, "Field Value") > self.button = wx.Button(self.panel, -1, "Edit") > > self.__set_properties() > self.__do_layout() > # end wxGlade > > def __set_properties(self): > # begin wxGlade: MyFrameOne.__set_properties > self.SetTitle("frame_1") > self.label.SetMinSize((-1, 15)) > # end wxGlade > > def __do_layout(self): > # begin wxGlade: MyFrameOne.__do_layout > sizer_1 = wx.BoxSizer(wx.VERTICAL) > sizer = wx.StaticBoxSizer(self.staticbox, wx.HORIZONTAL) > sizer.Add(self.label, 0, wx.ALL, 3) > sizer.Add(self.textBox, 0, wx.ALL, 3) > sizer.Add(self.button, 0, wx.ALL, 3) > self.panel.SetAutoLayout(True) > self.panel.SetSizer(sizer) > sizer.Fit(self.panel) > sizer.SetSizeHints(self.panel) > sizer_1.Add(self.panel, 1, wx.EXPAND, 0) > self.SetAutoLayout(True) > self.SetSizer(sizer_1) > sizer_1.Fit(self) > sizer_1.SetSizeHints(self) > self.Layout() > # end wxGlade > > # end of class MyFrameOne > > ## modified from BoaApp > class App(wx.App): > def OnInit(self): > wx.InitAllImageHandlers() > self.main = MyFrameOne(None) > self.main.Show() > self.SetTopWindow(self.main) > return True > > def main(): > application = App(0) > application.MainLoop() > > if __name__ == '__main__': > main() > > </code> > > <code id="modifiedFromGlade" class="fails"> > #!/usr/bin/env python > # -*- coding: ISO-8859-1 -*- > #The commented out code from MyFrame was moved to class Panel \ > # and appropriately modified by changing self.panel to self etc > > import wx > > class MyFrameTwo(wx.Frame): > def __init__(self, *args, **kwds): > # begin wxGlade: MyFrameTwo.__init__ > kwds["style"] = wx.DEFAULT_FRAME_STYLE > wx.Frame.__init__(self, *args, **kwds) > ## self.panel = panel(self, -1) > self.panel = Panel(self, -1) > self.__set_properties() > self.__do_layout() > # end wxGlade > > def __set_properties(self): > # begin wxGlade: MyFrameTwo.__set_properties > self.SetTitle("frame_1") > self.label.SetMinSize((-1, 15)) > # end wxGlade > > def __do_layout(self): > # begin wxGlade: MyFrameTwo.__do_layout > sizer_1 = wx.BoxSizer(wx.VERTICAL) > ## sizer = wx.StaticBoxSizer(self.staticbox, wx.HORIZONTAL) > ## sizer.Add(self.label, 0, wx.ALL, 3) > ## sizer.Add(self.textBox, 0, wx.ALL, 3) > ## sizer.Add(self.button, 0, wx.ALL, 3) > #### self.panel.SetAutoLayout(True) > ## self.panel.SetSizer(sizer) > ## sizer.Fit(self.panel) > ## sizer.SetSizeHints(self.panel) > sizer_1.Add(self.panel, 1, wx.EXPAND, 0) > self.SetAutoLayout(True) > self.SetSizer(sizer_1) > sizer_1.Fit(self) > sizer_1.SetSizeHints(self) > self.Layout() > # end wxGlade > > # end of class MyFrameTwo > > > class Panel (wx.Panel): > def __init__(self, *args, **kwds): > self.staticbox = wx.StaticBox(self, -1, "StaticBox") > self.label = wx.StaticText(self, -1, "Field Name") > self.textBox = wx.TextCtrl(self, -1, "Field Value") > self.button = wx.Button(self, -1, "Edit") > __doLayout() > > def __doLayout(): > sizer = wx.StaticBoxSizer(self.staticbox, wx.HORIZONTAL) > sizer.Add(self.label, 0, wx.ALL, 3) > sizer.Add(self.textBox, 0, wx.ALL, 3) > sizer.Add(self.button, 0, wx.ALL, 3) > > # maybe comment this and uncommennt frame2's corresponding line > panel.SetAutoLayout(True) > > self.SetSizer(sizer) > sizer.Fit(self.panel) > sizer.SetSizeHints(self.panel) > > > ## modified from BoaApp > class App(wx.App): > def OnInit(self): > wx.InitAllImageHandlers() > self.main = MyFrameTwo(None) > self.main.Show() > self.SetTopWindow(self.main) > return True > > def main(): > application = App(0) > application.MainLoop() > > if __name__ == '__main__': > main() > > </code> > > <errorMessages> > /home/xaos/xpy/cnc/i2g/prefDialog/test/frame2.py > Traceback (most recent call last): > File "/home/xaos/xpy/cnc/i2g/prefDialog/test/frame2.py", line 82, in ? > main() > File "~/xpy/cnc/i2g/prefDialog/test/frame2.py", line 78, in main > application = App(0) > File > "/usr/lib/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_core.py", line > 7473, in __init__ > self._BootstrapApp() > File > "/usr/lib/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_core.py", line > 7125, in _BootstrapApp > return _core_.PyApp__BootstrapApp(*args, **kwargs) > File "~/xpy/cnc/i2g/prefDialog/test/frame2.py", line 72, in OnInit > self.main = MyFrameTwo(None) > File "~/xpy/cnc/i2g/prefDialog/test/frame2.py", line 13, in __init__ > self.panel = Panel(self, -1) > File "~/xpy/cnc/i2g/prefDialog/test/frame2.py", line 48, in __init__ > self.staticbox = wx.StaticBox(self, -1, "StaticBox") > File > "/usr/lib/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_controls.py", > line 990, in __init__ > newobj = _controls_.new_StaticBox(*args, **kwargs) > TypeError: argument number 1: a 'wxWindow *' is expected, 'Panel' is > received > Script terminated. > > </errorMessages> > > > It seems as though the complaint is that a 'wxWindow *' is expected, > 'Panel' is received > However, Panel IS a wx.Panel derivative which IS a wx.Window derivative! > Additionally, the methods in the code of Panel and MyFrameOne seem to be > identical. > I can't understand this. Anyone have any thoughts? > > I'm using spe as an IDE > > ~S~ > > I taught myself everything I know about Python and wxPython in the lasst > week and I still don't know everything. > > You will probably get better results if you post this to gmane.com.python.wxpython list as it is specific to wxPython.
-Larry -- http://mail.python.org/mailman/listinfo/python-list