tags:

views:

1182

answers:

5

I've played around with GTK, TK, wxPython, Cocoa, curses and others. They are are fairly horrible to use.. GTK/TK/wx/curses all seem to basically be direct-ports of the appropriate C libraries, and Cocoa basically mandates using both PyObjC and Interface Builder, both of which I dislike..

The Shoes GUI library for Ruby is great.. It's very sensibly designed, and very "rubyish", and borrows some nice-to-use things from web development (like using hex colours codes, or :color => rgb(128,0,0))

As the title says: are there any nice, "Pythonic" GUI toolkits?

+1  A: 

I've used Glade with some success, though I didn't manage to wrap my head around creating anything really complex. It has a nice GUI builder and stores the forms as xml files that are loaded dynamically. Kind of like XAML afiak.

Tom
+7  A: 

Have you looked at Qt/PyQt? Although PyQt is a direct port from the C++ library, I find it much more pythonic and nice to program with compared to the others you listed. It also has very good documentation.

Dabo has a nice ui library implemented on top of wxPython. It's a framework intended mostly for database-centric applications, but the ui library can be used separately.

There are/were several other attempts to create a very pythonic gui as a layer on top of PyGtk or wxPython, such as wax and PyGui, which seem to be "stuck" at various degrees of being complete.

Also, an exhaustive list of Python GUI toolkits can be found here.

dF
+1  A: 

Seconding PyQt. Coupled with the book Rapid GUI Programming with Python and Qt, it's really easy to learn.

+1  A: 

I use pyGtk. I think wxPython is nice but it's too limited, and PyQt is, well, Qt. =)

Can Berk Güder
+5  A: 

Please check out Dabo, our framework for desktop applications. http://dabodev.com

We have wrapped the wxPython toolkit for the UI classes, and replaced their ugly C++ style functions with simple properties. You mentioned assigning color: in Dabo, you would do it very simply, using your choice of:

obj.BackColor = "red"
obj.BackColor = (255, 0, 0)
obj.BackColor = "FF0000"
obj.BackColor = "#FF0000"

Dabo understands all of these, and handles the differences for you automatically.

I am one of the authors of Dabo, and would be happy to answer any other questions that you may have.

--- Ed Leafe

Ed Leafe