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.


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 48 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.

  1. Tkinter 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.
  2. 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")
    app.go()
    
    

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


  3. Pygame Pygame is a set of Python modules designed for writing video games. Pygame adds functionality on top of the excellent SDL library. This 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. 

  4. Atlas Python This is a Python version of the 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.
    Remember! Your graphical user interface will run on your Default browser.
    
        

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


    BODY = """

    <fieldset>

     <input id="Input" xdh:onevent="Submit" value="AlixaProdev"/>

     <button xdh:onevent="Submit">Hello</button>

     <hr/>

     <fieldset>

      <output id="Output">Greetings displayed here!</output>

     </fieldset>

    </fieldset>

    """



    def ac_connect(dom):

        dom.inner("", BODY)

        dom.focus("Input")



    def ac_submit(dom):

        name = dom.get_value("Input")

        dom.begin("Output", f"<div>Hello, {name}!</div>")

        dom.set_value("Input", "")

        dom.focus("Input")



    CALLBACKS = {

        "": ac_connect,

        "Submit": ac_submit

    }


    atlastk.launch(CALLBACKS)

    To learn more about Atlas Python, click here to learn from the official documentation.

  5. 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. There is no need to create it using HTML tags.

    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!')
        wp.add(d)
        return wp
    
    jp.justpy(hello_world)
    
    
    Their official documentation has a complete list of functionalities and uses cases. Click here to go to the JustPy official documentation.

  6. Pyjamas 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.


  7. Application View Controller 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.

    To learn more about AVC, go to their official documentation, full of awesome examples.

  8. 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. You can use it for automation testing for your projcet.

    You can learn more about CEF Python, go to their Github Profile

  9. 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.

    Go to their official documentation, full of awesome examples.

  10. 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)
        dpg.add_input_text(label="string")
        dpg.add_slider_float(label="float")
    dpg.setup_viewport()
    dpg.start_dearpygui()
    
    
    To learn more about Dear PyGUI, click here.

  11. formlayout It 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.

  12. gui2py 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.  

  13. Guietta Guietta is a tool that makes GUIs simple. it supports matplotlib  integration, for easy event-driven plots easily display columns of data in labels using lists and dicts multiple windows customizable behavior in case of exceptions queue-like mode (a la PySimpleGUI) integrate any QT widget seamlessly, even your custom ones (as long as it derives from QWidget, it is OK) easy background processing for long-running operations ordinary QT signals/slots, accepting any Python callable if you really want to use them.
    
    
    from guietta import Gui, _
    
    gui = Gui( [ 'Enter number' , '__num__' , ['Go'] ],
               [ 'Result ---> ' , 'result'  ,   _    ] )
    gui.run()
    
    

  14. guidata guidata 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). 

  15. Gooey Gooey 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. 

  16. guizero 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).

  17. IronPython 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.

  18. Jython 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.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 300);
            JButton button = new JButton("Click Me!");
            button.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        System.out.println("Clicked!");
                    }
                }
            );
            frame.add(button);
            frame.setVisible(true);
        }
    }
    
    
    

  19. Kivy 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.

  20. libavg 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. 

  21. pyforms 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.

  22. pyglet 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.

  23. PyGObject 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.

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

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

  26. PySimpleGUI  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. Duplicating Excel in every detail is an example of something not well suited for PySimpleGUI.

  27. pywebview 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.

  28. Toga 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.

AlixaProDev

I’m Ali, Founder of alixaprodev.com. I am a Software developer, and I love to write articles to help students, developers, and learners. I started alixaprodev.com because of my love for Python, Java, and WebDev.

Post a Comment (0)
Previous Post Next Post