Do other Python GUI toolkits require this?

Kevin Walzer kw at codebykevin.com
Mon Apr 23 09:55:04 EDT 2007


Michael Bentley wrote:
> OK.  In order to kill the-thread-that-would-not-die(tm), I think I know 
> what I must do.  I'll print a correction:
> 
> On Apr 19, 2007, at 2:22 AM, Michael Bentley wrote:
>> ... I switched to PyObjC.  The
>> learning curve is rather steep IMO, but worth it.  One thing I think
>> I should mention though is that if you move to PyObjC -- do some
>> projects in Objective C first.  Otherwise your brain will implode.
> 
> Should be changed to:
> 
> .. I switched to PyObjC.  The
> learning-effort curve is rather steep IMO, but worth it.  One thing I think
> I should mention though is that if you move to PyObjC -- do some
> projects in Objective C first.  Otherwise your brain will implode.
> 
> Hope this helps,
> Michael ;-)
> 

I had originally thought that learning PyObjC might preclude me from 
having to learn Objective-C, but that seems not to be the case. I have 
previously found the same to be true with PyQt and wxPython--not knowing 
the toolkits as they are implemented in C++ is a serious handicap. I've 
even found this to be the case with Tkinter: understanding the Tcl 
implementation of Tk (which I do, because I am also a Tcl developer) is 
a huge advantage.

Am I wrong to conclude that, if you want to do GUI programming in 
Python, then some level of proficiency with another language is not just 
recommended, but almost required? This is the case at least in my 
experience. When I first started learning Python a couple of years ago, 
I spun my wheels with it for months, because I couldn't figure out where 
to get started with GUI programming. Finally I set Python aside and took 
up Tcl/Tk for awhile--its simplicity in building GUI's is more 
beginner-friendly. (No "there's more than one way to do it"--there's 
only one way to do it, and that's Tk.)

Now, coming back to Python with the Tk model of GUI development burned 
in my brain, I appreciate the breadth of functions that Python 
supports--but I still find myself "dropping down into Tcl" (!) to 
assemble elements of my GUI's--either to write a Python wrapper, or 
figure out how to implement something in pure Python.

I understand the argument for Python having lots of bindings to 
different GUI toolkits. If you are already proficient with a GUI toolkit 
in a compiled language (Gtk, wxWidgets, Cocoa, Qt) then presumably 
switching to Python will speed up your development--learning Python is 
easy if you already know C++, for instance, and usually the Python 
bindings are just a "thin wrapper" over the compiled bits. But if you 
come to Python from the other direction--you're a relative beginner and 
you want to learn GUI programming without the complexities of compiled 
languages--then it's a lot harder to get started, ironically. Even 
Tkinter is a challenge for someone who doesn't know Tcl. The basics are 
easy enough--buttons, menus, labels, images--but doing anything 
sophisticated, such as trees, column views, drag-and-drop, and so on, 
requires extensions that may or may not be implemented in Python.

-- 
Kevin Walzer
Code by Kevin
http://www.codebykevin.com



More information about the Python-list mailing list