7 Top Python GUI Frameworks for 2017


As a Python developer, sooner or later you’ll want to write an application with a graphical user interface. Fortunately, there are a lot of options on the tools front: The Python wiki on GUI programming lists over 30 cross-platform frameworks, as well as Pyjamas, a tool for cross-browser Web development based on a port of the Google Web Toolkit.

How to choose between all these options for Python GUIs? I started by narrowing it down to those that included all three platforms (Windows, Mac, and Linux) and, where possible, Python 3. After that filtering, I found four toolkits (Gtk, Qt, Tk, and wxWidgets) and seven frameworks (Kivy, PyQt, gui2Py, libavg, wxPython, Pyforms, and PyGOBjects). Here’s why I like them.

To find Python-related jobs, click here.


One of the more interesting projects, the liberal MIT-licensed Kivy is based on OpenGL ES 2 and includes native multi-touch for each platform and Android/iOS. It’s an event-driven framework based around a main loop, and is thus very suitable for game development. Your application adds callbacks from the main loop at a scheduled frequency, or by one-off trigger. The Kivy framework is very powerful for handling everything from widgets to animation, and includes its own language for describing user interface and interactions.

If you want to create cross-platform graphical applications, or just need a very powerful cross-platform GUI, Kivy is highly recommended.


At just two years old (making it one of the more recent frameworks), Pyforms is a Python 2.7/3.x cross-environment framework for developing GUI applications. It is modular and encourages code reusability with minimal effort.

Based on PyQt, OpenGL and other libraries, it provides a quite comprehensive set of 22 controls, all based on a ControlBase object; it also includes a video player, web browser and OpenGL. Read the Pyforms online docs to get a feel for it.

PyGObject (a.k.a. PyGi)

PyGObject is a module that lets you write Python applications for the GNOME project or a Python application using GTK+. It provides bindings to GObject, a C cross-platform library that offers common types and a baseclass to a large code base and has been used in many projects since 2002; for example, in the GIMP image manipulator, for which GTK+ was developed.

GTK+ is a comprehensive free software cross-platform widget toolkit that offers GUI capability in many Linux and Windows/Mac OSX applications.


Qt is a multi-licensed cross-platform framework written in C++. If your application is completely open source, you can use Qt for free under the community license; otherwise you’ll need a commercial license. Qt has been around for a long time and was owned by Nokia for a while; it’s a very comprehensive library of tools and APIs, widely used in many industries, and covers many platforms including mobile. If a gadget such as a SatNav has a GUI, there’s a good chance it’ll be Qt based.


Compared to Kivy and PyQt, PyGUI is considerably simpler and just for Unix, Macintosh and Windows platforms. Developed by Dr. Greg Ewing at the University of Canterbury in New Zealand, the MVC framework focuses on fitting into the Python ecosystem as easily as possible.

One of the platform’s aims is to interpose as little code as possible between the Python application and the platform’s underlying GUI so the application’s display always reflects the native GUI of the platform. If you’re after a simple and quick way to learn GUI, start with this one.

Next Up: libavg and wxPython (click here or below)


12 Responses to “7 Top Python GUI Frameworks for 2017”

November 26, 2014 at 11:48 am, Bob said:

I didn’t know things like these can be done using Python.


August 11, 2015 at 12:07 pm, Chartres said:

Hey, thanks for the overview. Most of the projects haven’t been updated since sesveral years… is that normal? Is there perhaps a shiny new framework that is in its early stages?


November 16, 2015 at 6:08 pm, Gregory said:

There’s PySide which is also a Qt python binding. I haven’t used it in years but I recently read somewhere that its latest release is from October 2015. I think it’s available under LGPL as well.


December 01, 2015 at 5:50 pm, Airton Granero said:

Some corrections and updates

Kivy to this date (December 2015) only supports Python 3.3 but with packaging for Python 2.7 only. This is complete no go as Python 3.4 asyncio has become so important so quick.

PyGUI do not work on Python 3.5 (at least, maybe even others).

libavg is not supported in Python 3.x (or any Python 64 bit version).

Now wxPython (Phoenix version) do not work on Python 3.5 (but works on Python 3.4 even in 64 bit Windows).


December 03, 2015 at 10:50 pm, Fatima said:

Hey. i need help with paython program for my final presentation. i need to creat program with gui. can anyone help me


January 24, 2016 at 1:58 am, sagive said:

This is the real problem with python! Lack of GUI support for 3.5, The only real out of the box GUI that works right now is PyQt which has a problematic licensing for most project and is costly for a beginner developer.

This is a real turn off for programmers coming from other languages. i hope some community project would kickoff and soon otherwise python might be a dead language.


February 10, 2016 at 5:34 pm, Mike said:

There’s always Tkinter. It works on every version of Python. It sounds like Kivy supports Python 3.5 too


July 04, 2016 at 12:45 pm, Jay Jay said:

The problem is there are 30 half baked ways to do GUI in Pyton instead of 2 or 3 well maintained Projects. It’s kind of like it is with standards or linux distributions…


August 25, 2016 at 3:57 pm, Herbert Mischel said:

Actually – Lianja is the only drag and drop python GUI builder that I have seen.


January 06, 2017 at 2:58 pm, Tony Rivera said:

I couldn’t agree more. I have been researching this for close to three months now and I am not anywhere closer to having a solution I can work with.


March 02, 2017 at 1:23 pm, vishwanath said:

Tkinter is also used to gui development, it easy to learn and it is the best.


July 05, 2017 at 4:55 pm, Brendan Simon said:

wxPython 4.0.0a3 (aka Phoenix) works ok with the latest python (Python3.6.1).

I’m also using wxglade to do the GUI layout for some apps. It works ok once you get the hang of it. You “drag-n-drop” (kind of) controls into sizer regions, which you need to define first to get the layout working. Once you get used to that process, you can knock up layouts at a much faster rate than hand coding (well at least for me).


Post a Comment

Your email address will not be published.