up with PyGUI!

Hans Nowak hans at zephyrfalcon.org
Wed Sep 22 13:35:00 EDT 2004


Nicolas Fleury wrote:
> Hans Nowak wrote:
> 
>> Zooko O'Whielacronx wrote:
>>
>>> I'm a fan of Greg Ewing's PyGUI [1].  I used it to code a simple game 
>>> for my son [2], and enjoyed it.  Programming with wxPython feels like 
>>> programming with a C++ tool that has been wrapped in Python.  
>>
>> This problem is addressed by Wax:
> 
> 
> I think it doesn't go far enough.  Wouldn't it better to hide the 
> concept of wxPython ownership by now passing the parent in the 
> constructor, but instead create the wxPython widget when it is finally 
> added to its parent?  

I'm not sure what you mean.  One known issue is, that there is some redundancy 
when creating a control and adding it to its parent:

   b = Button(parent, ...)
   parent.AddComponent(b, ...)

I am thinking of ways to make this simpler.  One possible solution would be to 
accept a 'layout' parameter:

   b = Button(parent, ..., layout={'expand': 'both', 'border': 2})

...but I'm not sure that actually makes things simpler or more readable.

It's also possible to do something like this:

   parent.Add(some_control, parameters_for_control, parameters_for_layout)

I think this is rather ugly, and I don't like the mixing of control constructor 
parameters and layout parameters.  Aside from that, it's sometimes useful or 
necessary to use the control before it's added to the parent.  Consider:

from wax import *

class MainFrame(Frame):

     def Body(self):
         b1 = Button(self, text="b1")
         b1.Size = (40, 40)
         self.AddComponent(b1)

         b2 = Button(self, text="b2")
         self.AddComponent(b2)
         b2.Size = (40, 40)

         self.Pack()

app = Application(MainFrame)
app.Run()

> It could also be a good idea to take the occasion 
> to respect PEP8.  

Which recommendations of the style guide does the Wax code violate?

> Note also that "import wax" would be better than "from 
> wax import *".

I'm considering it.  This way, it would also be possible to import things on 
demand.  On the other hand, I don't like to write 'wax.' before everything.

--
Hans Nowak (hans at zephyrfalcon.org)
http://zephyrfalcon.org/




More information about the Python-list mailing list