Python has a good ecosystem with a number of UI frameworks available. Here I am listing some of the popular UI frameworks available for Python along with their tutorial/getting started examples, which would be helpful for you to compare and choose one for your need.
Web Based Python UI Frameworks
Dash
Built on top of Plotly.js, React and Flask, Dash ties modern UI elements like drop downs, sliders, and graphs directly to your analytical Python code.
Github: https://github.com/plotly/dash | Stars: 15.2k+
License: MIT
Tutorials:
- https://dash.plotly.com/getting-started
- https://realpython.com/python-dash/
- https://towardsdatascience.com/beginners-guide-to-building-a-multi-page-dashboard-using-dash-5d06dbfc7599
Related Packages:
Eel
A little Python library for making simple Electron-like HTML/JS GUI apps
Github: https://github.com/ChrisKnott/Eel | Stars: 4.6k+
License: MIT
Remi
Remi is a GUI library for Python applications that gets rendered in web browsers. This allows you to access your interface locally and remotely. There is also a drag n drop GUI Editor.
REMI GUI Editor allows you easily create GUIs using drag and drop.
Github: https://github.com/dddomodossola/remi | Stars: 2.9k+
Remi GUI Editor: https://github.com/dddomodossola/remi/tree/master/editor
License: Apache 2.0
Flexx
Flexx is a pure Python toolkit for creating graphical user interfaces (GUI’s), that uses web technology for its rendering. Apps are written purely in Python; The PScript transpiler generates the necessary JavaScript on the fly.
You can use Flexx to create (cross platform) desktop applications, web applications, and export an app to a standalone HTML document.
Github: https://github.com/flexxui/flexx | Stars: 2.8k+
Interactive Example: https://flexx.readthedocs.io/en/latest/examples/demo_src.html
License: BSD 2-Clause
PyWebView
pywebview can be used for building GUIs for your Python program using HTML, CSS and Javascript. It is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its own native GUI window. You can use pywebview with a lightweight web framework like Flask or Bottle.
pywebview uses native GUI for creating a web component window: WinForms on Windows, Cocoa on macOS and QT or GTK on Linux. If you choose to freeze your application, pywebview does not bundle a heavy GUI toolkit or web renderer with it keeping the executable size small. pywebview is compatible with Python 3.
Website: https://pywebview.flowrl.com/
GitHub: https://github.com/r0x0r/pywebview | Stars: 2.6k+
React Boiler Plate: https://github.com/r0x0r/pywebview-react-boilerplate
Platforms: Linux, Windows, macOS
License: BSD 3-Clause License
Other Python UI Frameworks
Gooey
Turn (almost) any Python 2 or 3 Console Program into a GUI application with one line.
Github: https://github.com/chriskiehl/Gooey | Stars: 14.9k+
Usage: https://github.com/chriskiehl/Gooey#usage
Examples: https://github.com/chriskiehl/GooeyExamples
License: MIT
PyQt
PyQt is a set of Python bindings for The Qt Company’s Qt application framework and runs on all platforms supported by Qt including Windows, macOS, Linux, iOS and Android. PyQt6 supports Qt v6, PyQt5 supports Qt v5. This is developed and maintained by Riverbank Computing.
Website: https://riverbankcomputing.com/software/pyqt/intro
Tutorial: https://www.pythonguis.com/pyqt-tutorial/
Platforms: Linux, Windows, macOS, Android, iOS.
License: Dual Licensed. GPL and Commercial License.
Qt for Python (PySide)
Qt for Python is the project that provides the official set of Python bindings for Qt (PySide6). This is an alternative to PyQt, which is licensed under GPL, while PySide is licensed under LGPL v2.1
Website: https://www.qt.io/qt-for-python
Tutorial: https://www.pythonguis.com/pyside-tutorial/
Platforms: Linux, macOS, Windows.
License: LGPL v2.1
Kivy
Kivy is an open source Python library for rapid development of applications
that make use of innovative user interfaces, such as multi-touch apps.
Github: https://github.com/kivy/kivy | Stars: 13.5k+
Tutorial: https://kivy.org/doc/stable/tutorials/pong.html
Material Design Theme: https://github.com/kivymd/KivyMD
Platforms: Linux, Windows, OS X, Android, iOS, and Raspberry Pi
License: MIT License
tkinter
Tkinter is a Python binding to the Tk GUI toolkit. It is the standard Python interface to the Tk GUI toolkit.
Website: https://docs.python.org/3/library/tkinter.html
Designer: https://github.com/ParthJadhav/Tkinter-Designer
Platforms: Linux, macOS, Windows.
License: Python License
DearPyGUI
Dear PyGui is a simple to use (but powerful) Python GUI framework. It is a library built with Dear ImGui which creates a unique retained mode API (as opposed to Dear ImGui’s immediate mode paradigm).
Github: https://github.com/hoffstadt/DearPyGui | Stars: 6.1k+
Examples: https://github.com/hoffstadt/DearPyGui#usage
License: MIT
Toga
A Python native, OS native GUI toolkit.
Github: https://github.com/beeware/toga | Stars: 2.8k+
Tutorial: https://toga.readthedocs.io/en/latest/tutorial/index.html#tutorial
License: BSD 3-Clause
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 (lists and dictionaries).
Your PySimpleGUI code is simpler and shorter than writing directly using the underlying framework because PySimpleGUI implements much of the “boilerplate code” for you. Additionally, interfaces are simplified to require as little code as possible to get the desired result. Depending on the program and framework used, a PySimpleGUI program may require 1/2 to 1/10th amount of code to create an identical window using one of the frameworks directly.
Github: https://github.com/PySimpleGUI/PySimpleGUI | Stars: 8.6k+
License: LGPL v3.0
List of Other Python GUI Frameworks
Apart from what is listed above, there are other Python GUI Frameworks available, which is listed below.
https://wiki.python.org/moin/GuiProgramming
What are the Python UI frameworks that you have used? If you know of any other major Python UI framework, let us know in the comments for us to add to this list :)
No comments:
Feel free to leave a piece of your mind.