Ka-Ping Yee wrote: > On Sun, 15 May 2005, Shane Hathaway wrote: > >>You might add to the PEP the following example, which could really >>improve the process of building GUIs in Python: >> >> class MyFrame(Frame): >> def __init__(self): >> with Panel(): >> with VerticalBoxSizer(): >> self.text = TextEntry() >> self.ok = Button('Ok') > > > I don't understand how this would be implemented. Would a widget > function like 'TextEntry' set the parent of the widget according to > some global 'parent' variable? If so, how would 'Panel' know that > its parent is supposed to be the 'MyFrame' object?
Try this version, which I sent to Nick earlier: class MyFrame(Frame): def __init__(self): with Panel(self): with VerticalBoxSizer(self): self.text = TextEntry(self) self.ok = Button(self, 'Ok') The 'self' parameter tells the component to add itself to the current parent inside the Frame. The current parent is a temporary variable set by 'with' statements. Outside any 'with' statement, the current parent is the frame. There is only a little magic. Maybe someone can find an even less magical pattern, but it's a lot easier to read and write than the status quo: class MyFrame(Frame): def __init__(self): p = Panel() self.add(p) sizer = VerticalBoxSizer(p) p.add(sizer) self.text = TextEntry() sizer.add(self.text) self.ok = Button('Ok') sizer.add(self.ok) Shane _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com