28+ Python GUI Development Libraries or Frameworks


As a GUI application developer, for creating a Graphical user interface you have multiple options and among them, python is one of the easiest and simplest ways when it comes to the simplicity of the programming language.

Python is a general-purpose programming language that can be used for almost anything that you can think of, from basic scripts to Machine learning and Data Science.

Table of Contents (toc)

There is a huge list of Python frameworks and Python libraries that can be used for creating Graphical user interfaces.

Some of these python frameworks are only for a specific operating system while others are for a cross-platform. 

In this article, I will list 28 of them and explain to you how you can get started with creating your graphical user interface with the python framework. Have a look at all of them and choose the one that suits your project. 

Let's have a look at the list of the

28+ python GUI development Frameworks.


Tkinter is Python's de-facto standard GUI (Graphical User Interface) package. It is a thin object-oriented layer on top of Tcl/Tk.

Tkinter is not the only GuiProgramming toolkit for Python. It is however the most commonly used one. CameronLaird calls the yearly decision to keep TkInter "one of the minor traditions of the Python world.


appJar is a cross-platform Graphical user interface Python Framework that can help you create awesome GUI applications in a few lines of code. appJar is created by a teacher while teaching to his students.

If you are someone who is lazy to write code then this is the best python framework to write your GUI application. There are three steps to create your graphical user interface.

look at the following code which will create a simple graphical user interface.

from appJar import gui
app = gui()
app.addLabel("AlixaProDev", "MyFirstApp")
app.setLabelBg("title", "red")

A complete tutorial is available on the official website of the appJar.


Pygame is a set of Python modules designed for writing video games. Pygame adds functionality on top of the excellent SDL library.

Pygame allows you to create fully featured games and multimedia programs in the python language. Pygame is highly portable and runs on nearly every platform and operating system.

Atlas toolkit

With Atlas Python, you can easily create an attractive Graphical user interface with a few lines of code.

If you know a little bit of HTML, then Atlas Python is the best choice to create your GUI application with Python.

It uses HTML tags for the creation of different components. By using Atlas Python, you can use your web browser to create a Graphical user interface.

An example of Atlas Python to create your first Atlas user interface is the following.

import atlastk

BODY = """
 <input id="Input" xdh:onevent="Submit" value="AlixaProdev"/>
 <button xdh:onevent="Submit">Hello</button>
  <output id="Output">Greetings displayed here!</output>

def ac_connect(dom):
    dom.inner("", BODY)

def ac_submit(dom):
    name = dom.get_value("Input")
    dom.begin("Output", f"<div>Hello, {name}!</div>")
    dom.set_value("Input", "")

    "": ac_connect,
    "Submit": ac_submit


JustPy is also a cross-platform Graphical user interface Python library same as Atlas Python, but the only difference between Atlas Python and JustPy is that JustPy is running completely on the backend.

A sample code from their official documentation is here

import justpy as jp

def hello_world():
    wp = jp.WebPage()
    d = jp.Div(text='Hello world!')
    return wp



In the list of cross-platform GUI python frameworks, Pajamas is another python framework to create graphical user interface applications.

Pyjamas support almost every major browser, but the only condition is if those browsers have SVG support,pyjams have been a Widget contributed which provides access to the SVG "Canvas", allowing you to develop exceptionally powerful graphics applications. Offical website of Pyjamas is here.

Application View Controller 

This is a cross-platform python framework for creating graphical user interfaces in a very easy way. The display and the control of some application data through a GUI (Graphical User Interface) is a central problem in GUI programming, it absorbs a relevant part of the programming effort.

AVC which stands for Application View Controller is Fully transparent widget-variable connections.

Application View Controller has No design pattern, no application redesign, no widget toolkit dependent code, the separation between application logic and GUI.

CEF Python

This is another class-platform Python Graphical user interface framework, which is founded by Tomczak in 2012.

It is just like a Javascript framework that is used for creating Desktop applications, named Electron.js. CEF Uses it as a modern HTML5 based rendering engine that can act as a replacement for classic desktop GUI frameworks.

The Dabo Framework

Helps you create database-centric apps, which is not a requirement. Dabo is a 3-tier, cross-platform application development framework, written in Python.

Although it is designed for database-centric apps Lots of people are using Dabo for the GUI tools to create apps that have no need to connect to a database at all.

Dear PyGui

Dear PyGui is a simple to use (but powerful) Python GUI framework. Dear PyGui is NOT a wrapping of Dear Gui in the normal sense.

It is a library built with Dear PYGui which simulates a traditional retained-mode GUI (as opposed to Dear ImGui's immediate mode paradigm). For an example of the Dear PyGui.

import dearpygui.dearpygui as dpg
def save_callback():
    print("Save Clicked")
with dpg.window(label="Example Window"):
    dpg.add_text("Hello world")
    dpg.add_button(label="Save", callback=save_callback)


formlayout is based on Pyside. The easiest way to create Qt form dialogs and widgets is with Python. Graphical user interface (GUI) libraries are usually designed to address issues that are far more complex than a simple dialog box.

As a consequence, generating simple form layouts or dialogs is generally not as easy as it should be: the feature-line count ratio is very their GitHub page.


gui2py is a GUI framework for building cross-platform "visual" desktop applications on Windows, Mac OS X, and Linux, using the Python language and the wxPython toolkit. Its objective is to evolve PythonCard with web2py's philosophy and facilities.


Guietta is a tool that makes GUIs simple. it supports matplotlib  integration, for easy event-driven plots easily display columns of data in labels

from guietta import Gui, _

gui = Gui( [ 'Enter number' , '__num__' , ['Go'] ],
           [ 'Result ---> ' , 'result'  ,   _    ] )


guidata is Automatic graphical user interfaces generation for easy dataset editing and display.

Based on the Qt library, guidata is a Python library generating graphical user interfaces for easy dataset editing and display. It also provides helpers and application development tools for Qt (PyQt4, PyQt5, PySide2). 


Turn (almost) any command-line program into a full GUI application with one line. Gooey converts your Console Applications into end-user-friendly GUI applications.

It lets you focus on building robust, configurable programs in a familiar way, all without having to worry about how they will be presented to and interacted with by your average user. 


The aim of guizero is to make the process of creating simple GUIs quick, accessible and understandable for new learners.

Works with standard Python Tkinter GUI library (and no need to install other libraries) Abstracts away details new learners to find difficult to understand (such as Tkinter StringVar() objects).


IronPython is an open-source implementation of the Python programming language which is tightly integrated with the .NET Framework.

IronPython can use the .NET Framework and Python libraries, and other .NET languages can use Python code just as easily.


Using Swing from Jython has a number of advantages over the use of Swing in Java. For example, bean properties are less verbose in Jython, and binding actions in Jython is much less verbose (in Java anonymous classes are typically used, in Jython a function can be passed).

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class HelloWorld {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello Java!");
        frame.setSize(300, 300);
        JButton button = new JButton("Click Me!");
            new ActionListener() {
                public void actionPerformed(ActionEvent event) {


Kivy runs on Linux, Windows, OS X, Android, iOS, and Raspberry Pi. You can run the same code on all supported platforms.

It can natively use most inputs, protocols, and devices including WM_Touch, WM_Pen, Mac OS X Trackpad, and Magic Mouse, Mtdev, Linux Kernel HID, TUIO. A multi-touch mouse simulator is included.


libavg allows programmers, media artists, and designers to quickly develop media applications.

It uses python as a scripting language, is written in high-speed C++, and uses modern OpenGL for display output. The project has been under constant development since its inception in 2003.

libavg supports the full variety of display elements - images, text, videos, camera output, vector graphics - that modern graphics-intensive applications need.


With a minimal API, interfaces are easily defined using a short Python code. Avoid the constant switching between the GUI designers and the Python IDE.

It is designed to allow the coding of advanced functionalities with minimal effort. The code is organized in modules and prepared to be reused by other applications. It makes the application's maintenance easier.

Turn the prototyping much easier and fast. Due to its simplicity, it has a low learning curve. Visit their pages right here.


pyglet is a cross-platform windowing and multimedia library for Python, intended for developing games and other visually rich applications.

It supports windowing, user interface event handling, Joysticks, OpenGL graphics, loading images and videos, and playing sounds and music. pyglet works on Windows, OS X and Linux.


PyGObject is a Python package that provides bindings for GObject-based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO, and many more. It supports Linux, Windows, and macOS.


PyQt5 supports the Windows, Linux, UNIX, Android, macOS, and iOS platforms and requires Python v3.5 or later. 


pysciter is an embeddable multiplatform HTML/CSS/script engine with GPU accelerated rendering designed to render modern desktop application UI. 


Transforms the Tkinter, Qt, WxPython, and Remi (browser-based) GUI frameworks into a simpler interface.

The window definition is simplified by using Python core data types understood by beginners.


pywebview is a lightweight cross-platform wrapper around a webview component that allows to display of HTML content in its own native GUI window.

It gives you the power of web technologies in your desktop application, hiding the fact that GUI is browser-based.

You can use pywebview either with a lightweight web framework like Flask or Bottle or on its own with a two-way bridge between Python and DOM.


Toga is a Python native, OS native, cross-platform GUI toolkit. Toga consists of a library of base components with a shared interface to simplify platform-agnostic GUI development.

Toga is available on Mac OS, Windows, Linux (GTK), and mobile platforms such as Android and iOS.

Summary and Conclusion:-

The best of all these are Appjar, DearPyGui, Pyqt5, Tkinter, Pygame. If you are interested in other python tutorials please visit my youtube channel Code with Ali.

Post a Comment

* Please Don't Spam Here. All the Comments are Reviewed by Admin.
Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !