Recs.
Updated
PyQt provides Python bindings to the cross-platform Qt GUI framework. Qt is not free for commercial use.
Specs
Pros
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.
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.
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.
Cons
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.