PyQt provides Python bindings to the cross-platform Qt GUI framework.
Ranked in these QuestionsQuestion Ranking
Pro More than just a GUI framework
Qt wraps several native platform APIs for networking, databases, etc. and provides standardized access to them through a single API — one codebase can cater to many platforms and perform the same across them.
Pro Signal/slot mechanism allows for code flexibility
GUI programming with Qt is built around the concept of signals and slots for communication between objects. A signal is emitted when an event occurs (e.g. a button is clicked), and slots are callable functions that handle the event (e.g. show a pop-up, when a button is clicked). This allows for flexibility when handling GUI events and results in a cleaner codebase.
PyQt is used in many large-scale applications and has stood the test of time.
Pro WYSIWYG interface builder available
PyQt has support for loading UIs built with Qt Designer, a drag-and-drop WYSIWYG interface builder, which allows you to design and build interfaces without writing any code.
Pro Many native widgets (UI components) available
Qt provides many widgets (buttons, textboxes, menus, et al.) out of the box, and they have a native look to them across all supported platforms: the same widget looks similar to the platform's native widget (e.g. a button in a PyQt application looks the same as a button on macOS, or Windows). On Linux systems, it changes according to the desktop environment.
Pro Many learning resources available
PyQt is one of the most popular UI frameworks for Python. It has an active community with many third-party code examples and tutorials available.
Pro API is easy to grasp for someone with a Qt/C++ background
PyQt has a straightforward API with its classes corresponding to Qt C++’s, and as such, the API documentation for C++ works for Python — the namespaces, properties, methods are all the same. If you have experience working with Qt and/or C++, you will find PyQt easy to work with.
Con Steep learning curve
It can take a while to get productive with PyQt. It is a huge framework and there are many ways to implement different things, some of them are conflicting and might be confusing to the unfamiliar.
Con No Python-specific documentation on classes in PyQt5
PyQt5's documentation links to its Qt counterpart, which is in C++. This can be confusing for someone without a background in C++ or experience with Qt.
Con Paid license required if your application is not "free as in speech"
PyQt is dual-licensed with GPL v3 and the Riverbank Commercial License. If you do not intend on releasing your application under a GPL-compatible license (i.e. make your application open-source), you must pay for a commercial license.