The Qt application framework is a mature, comprehensive, cross-platform development toolset primarily written in C++ that is used for creating graphical user interfaces (GUIs) as well as non-GUI applications for desktop, mobile, embedded, and web platforms.
It was originally conceived in the 1990s and has since become a leading framework known for its write once, deploy everywhere philosophy and its comprehensive set of APIs for everything from graphics and UI to networking, databases, and threading.
You can develop and use the Qt framework for free by leveraging its open-source licensing and the Python bindings provided by PyQt5.
| Component | Description | Free for Development & Use? | Key License |
|---|---|---|---|
| Qt Framework (The C++ Core) | The fundamental cross-platform libraries and APIs. | Yes (under Open Source terms) | GNU Lesser General Public License (LGPL v3) and GNU General Public License (GPL) |
| PyQt5 | The Python bindings for Qt 5, created by Riverbank Computing. | Yes (if your project is open source) | GNU General Public License (GPL v3) or a Commercial License |
| Qt Widgets | The classic collection of desktop-style UI components (buttons, text boxes, etc.). | Yes | LGPL/GPL |
| Qt Quick / QML | A declarative language (QML) and framework for building modern, dynamic UIs, especially for mobile and embedded systems. | Yes | LGPL/GPL |
| Qt Creator | The official cross-platform Integrated Development Environment (IDE). | Yes | GPL |
| Qt Designer | A graphical tool for designing and creating UI forms using a drag-and-drop interface, generating .ui files. | Yes | Included with the open-source Qt tools. |
The ability to use PyQt5 for free depends on the license you choose for your own application:
While the framework is the foundation, several tools aid the development process:
Qt is modular, meaning you only include the components you need. The core components free to use with PyQt5 include:
PyQt5 code can be "compiled" (packaged into standalone executables) for a wide range of operating systems, limited primarily by the underlying Qt 5 framework's cross-platform support.
The main platforms it supports are:
Core Desktop Platforms These are the most common and easiest to deploy to using tools like PyInstaller or cx_Freeze:
Mobile and Other Platforms While more complex and often requiring specialized tools like pyqtdeploy, PyQt5 (and Qt 5) can also target mobile and embedded systems:
Essentially, because PyQt is a binding for the C++ Qt library, it can run on any platform for which the Qt 5 framework itself has been ported. This makes PyQt a truly cross-platform solution for GUI development.
Fuentes