There are so many frameworks for writing GUI application using Python. But is there any one key standard framework? For example we have a bundle of .NET/C# on Visual Studio.

I am thinking in other perspectives also. In future if I give an interview for a Python programmer job, which GUI framework will be considered?

I also wonder, there is no IDE that integrates the GUI and Python language. Choice of flavor is good but over-choice becomes a distraction.

  • No. There's no "standard". .NET is not standardized. There's not standards body that has written a standard for .NET There is a standard for C#: ecma-international.org/publications/standards/Ecma-334.htm. Perhaps "standard" isn't what you mean? – S.Lott Jan 8 '11 at 2:31
  • @S.Lott: Sorry for that confusing term. I meant something different. For .NET applications, Visual Studio is the best all-i-one tool that includes GUI builder and other things. Rarely people look out for alternatives of VS.NET. I meant in a similar term. Any Python IDE where the search for a complete all-in-one solution ends. – RPK Jan 8 '11 at 8:34
  • Are you asking about the IDE (like Visual Studio)? If so, then "framework" is the wrong word in the question. Please clarify what you're asking for. – S.Lott Jan 8 '11 at 12:15
  • @S.Lott: No I am not asking about Visual Studio. Let me clarify. Take for instance, ASP.NET. It is a framework but it integrates very well into Visual Studio IDE. You have all the tools available on the center table. Is there something for Python? – RPK Jan 9 '11 at 2:08
  • Visual studio is an IDE == all the tools for development in one place. "I am not asking about Visual Studio" is the exact opposite of "You have all the tools available on the center table. Is there something for Python?". Either you're asking about the IDE (the Python version of Visual Studio) or you're asking about the framework itself. Or, perhaps you're asking about both. It's very hard to figure out what the question is about. Please update the question to state very clearly what you want. – S.Lott Jan 9 '11 at 13:56

You can write Win32 API GUI apps in Python, if you like writing all that boilerplate code: PyWin32 project

Personally, I like wxPython. It is cross-platform (fully supported on both Linux and Windows) and has been around for quite some time ... decent support base, and lots of documentation/example code. If you want to use this, take a look at BoaConstructor. That is the IDE for wxPython (or perhaps better stated, an IDE written in and for wxPython). It is the only RAD IDE specifically for Python that I have come across that is even worth mentioning, save the Qt UI editor (Qt's UI editor is usable for both C++ and PyQT).

As Peter mentioned in his answer, Tk is the defacto GUI for older Python apps, but they really do not look all that pretty to the end user. There are some extensions for it that make it look a little better and provide some ability to style the UI, but unless you are maintaining an older GUI app I would not suggest bothering with it.

pyGTK, also already mentioned, would be another good choice. It, too, is cross-platform, though I have not had any personal experience with GTK development on Windows. PyQT would be a better choice, IMO - I think the GUI's created with the Qt library both look and function superior to those made with GTK. I also find Qt's signal/slot event mechanism to be easier to work with. YMMV.

There really is not any standard out there for Python GUI development, at least not that I have seen, but of my fellow Python developers that I have worked with over the years, they have suggested to me wxPython and PyQT more than any of the other toolkits. I'm not sure if there is any substantial number of Python GUI development positions out there, to be honest. Most of the Python development I have done over the years has been server-side, but that's not to say that there are not various businesses now looking to go the open source route for their GUI apps.

| improve this answer | |
  • Tkinter apps can be made to look quite acceptable, often nearly indistinguishable from native apps, if you simply take the time to do it. I will agree, though, that wxPython looks better with no tweaking. Personally I still prefer Tkinter because it looks plenty good enough for most people, and my productivity is higher than with wxPython. – Bryan Oakley Jun 14 '12 at 23:26
  • Tk (Tkinter) does not support full Unicode (ex: script shaping) if you are planning to develop a l10n/i18n application. – user.dz Jul 1 '14 at 5:58

Tk used to be the standard, but it's arguably simplistic and ugly. Then Qt became pretty popular. Gtk is also possible, and that covers the favorites on Linux-ish platforms.

But you're right, there is really no no-brainer answer. Over-choice is pretty common in the open source world, after all.

| improve this answer | |
  • 4
    I would choose Qt just because it looks nicer than Gtk – TheLQ Jan 7 '11 at 21:30
  • 1
    +1 for a well-rounded answer. Qt is nice and powerful, and two bindings (license-wise) are available. – ChristopheD Jan 8 '11 at 0:42
  • It's arguably no longer ugly LOOKING on Windows. Still, I don't like what code you have to write looks like. Code ugly. Appearance, purely native, and quite reasonable, at last. – Warren P Oct 13 '11 at 20:49

There is no 'standard' and I agree - the plethora of choices is a pain. As for an integrated 'two way tools' IDE for Python GUI's, I also wonder why there don't seem to be any out there - maybe because there are so many GUI toolkits no-one wants to invest in an IDE for just one of them.

Having said that, PyQt 4.7 with P3k will give you wonderful GUI's (as well as a lot of other powerful features). See http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "This is the reference guide for PyQt 4.8.4. PyQt v4 is a set of Python bindings for v4 of the Qt application framework from Nokia."

PyQt is in widespread use and there are some good books on it: see http://www.qtrac.eu/pyqtbook.html "Rapid GUI Programming with Python and Qt" among others (book is outdated a bit - needs to be updated for P3k).

There are 2 serious issues with PyQt:

1) It has some distinctly 'unpythonic' characteristics, being just a thin wrapper on the C++ Qt libs. But I recommended P3k-PyQt 4.7 because some that has been addressed in the 'latest and greatest' packages. Check out this post:

PyQt design issues

2) For commercial use there are pretty steep licensing fees, both for PyQt and Qt.

An up and coming alternative to PyQt is PySide from Nokia, another Python wrapper for Qt which is entirely open source (that doesn't include the Qt licensing though).

Knowing a lot about Qt is not a bad thing market-wise, and you'll get that from PyQt, so I'd give it (or PySide) serious consideration if you're trying to decide on one GUI platform to become expert in.

Regardless of what you choose, I'd suggest avoiding tkinter for the most part, even though it's 'out of the box' with Python, because it's extremely limited, and IMO it has a crude, outdated look and feel.


| improve this answer | |

pyGTK is prolific. It's pretty easy to use and makes GUIs that don't look half bad.

| improve this answer | |
  • How rich is the community? How fast the answers arrive in its forum? – RPK Jan 7 '11 at 20:59
  • 1
    @RPK, I have no idea, I've never had to ask for help, everything is pretty easy to use. – dan_waterworth Jan 7 '11 at 21:02
  • I'm not sure "prolific" is the right word. "producing offspring, young, fruit, etc., abundantly; highly fruitful: a prolific pear tree" Maybe "popular" or "terrific". – S.Lott Jan 9 '11 at 22:18
  • @S.Lott, prolific: "Similarly producing results or works in abundance". (second wiktionary definition). "Serving to produce; fruitful of results; active; as, a prolific brain; a controversy prolific of evil." (Webster's Revised Unabridged Dictionary (1913 + 1828)) – dan_waterworth Jan 10 '11 at 6:54
  • prolific as in "pyGTK produces a lot of applications?" Seems strained. People produce applicatios. pyGTK is a popular foundation, perhaps, but it doesn't seem like the producer. – S.Lott Jan 10 '11 at 11:36

Gtk3 is a GUI framework that is very mature. It has native Python bindings (GObject Introspection) and plenty of documentation. If you are doing quite a bit of GUI, consider using Anjuta. Anjuta has a drag and drop interface to setup your widgets easily.

WxWidgets is pretty good, however there is no easy way to have Python callbacks generated dynamically like Anjuta does for Gtk.

PyGtk is now deprecated in favor of the Gtk3 to Python bindings (GObject Introspection)

PyQt is also a player in Python GUI, but it does not have a large community.

BoaConstructor is longer maintained and would be foolish to use.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.