Monday, March 7, 2011

Which Python GUI framework?

I am a newbie at Python. I see a few GUIs listed in the Python wiki but I would like to know what you think is the easiest to use. I have 2 requirements

  1. Have buttons, tabs and a textbox
  2. Be able to load an image in memory/from the web (I am using pyCURL to download the temp image(s))
From stackoverflow
  • I believe that wxPython is your best option. The GUI that comes with the Python standard library (Tkinter) is pretty nice, but doesn't support tabs out of the box. There's an extension called Tix which does, but it is a cross-language library which is well documented for Tcl and poorly documented for Python.

    I've been using wxPython recently and have been very impressed. It's easy to use, is extremely well documented for both Python and C++, and supports your requirements.

    Bryan Oakley : It's too bad that Python's Tk support is so far behind the latest iteration of Tk. The standard distribution of Tk has had tabs for quite a while now (since '07) with the new themed widgets. It's a pity Python isn't keeping up.
    Kirill Titov : As far as I know, Tkinter even does not operate with WinAPI, but has its own buttons etc. IMHO, i'ts bad.
    Eli Courtwright : You're correct, although whether that's bad depends on whether having a native look and feel for your app is desired.
  • Well, if we are voting, I would vote for PyGTK. It has the

    • best API,
    • fantastic documentation and tutorials,
    • a number of helper libraries,
    • a thriving community,
    • Glade user interface designing (edit: nosklo)
    • and not too hard for beginners.
    nosklo : and you have glade.
  • http://wiki.python.org/moin/PyQt

    Qt used with C++ is very nice, but I cannot say what PyQT is like since I never used it.

    Eli Courtwright : I agree that it's nice, unfortunately it's only free to use without buying a license for open source projects. This makes it a non-starter in a lot of corporate environments.
    Deestan : I tried (for research purposes) halfway rewriting one of my company's apps to PyQT. It was a pleasant experience.
  • I already answered here + under Wx you have something called XRC which is very similar to Glade.

  • I use wxPython quite a bit for my GUI needs; the simplest reason for me is that I've found it much easier to distribute wxPython apps than PyQt apps. (Additionally, Traits are better supported under wxPython that Qt, but that is changing.) That being said, XRC and Boa Constructor and Glade (which can also build wxPython GUIs with wxGlade) are all way, way behind Qt designer in sophistication and reliability.

    So, because I was willing to spend a bit of time writing the layout code, etc, and because I had to distribute to several platforms, I went with wxPython. But if you have a more controlled deployment environment and you want to design graphically, PyQt might be a better fit.

  • It would depend on your background as a programmer. If you're used to functional programming, I would go with Tkinter. If you're used to event-based programming, I would use wxPython.

    sli : wxPython lets you register events hooked to form elements, while in Tkinter you register functions as call backs to elements. I suppose the line dividing event-based and functional in this instance is fine, but that's how I feel about it.
  • PyQT. Here is a small tutorial.

    Emrah : It's not free though unless your project is GPL'ed.
    Ranieri : There's always the LGPLd pySide (http://www.pyside.org/), but I'm not sure what the current status is like.

0 comments:

Post a Comment