- Investigate the use of PyQt6 and Textualize to create a GUI for the DDS.
- Create a mock up of a GUI using the chosen library.
- Easy to understand and use
- Easy to maintain
- Good documentation and community support
During discussions the following libraries were considered:
- PyQt6
- Textualize
- Other python based GUI frameworks (tkinter, kivy, pyside6, etc.)
Pros and cons between the different python based GUI/TUI frameworks are derived from the following articles:
- Python GUI : Difference between tkinter, PyQt, and Kivy
- PyQt vs. Tkinter — Which Should You Choose for Your Next GUI Project?
- Best Python GUI Libraries
- PyQt5 vs PySide2
- Desktop App Development - PyQt vs Tkinter vs Electron
Library | Best For | Pros | Cons | Licencing |
---|---|---|---|---|
PyQt6 | Desktop applications, multimedia, scientific, and engineering applications | Feature rich, extensive documentation, active community support | Larger and more complex, supposedly a steeper learning curve | GPL |
Textualize | CLI integration | Can be served as an web application, low requirments | Might still feel like a CLI application for end users | MIT |
tkinter | Simple GUIs, small portable applications | Simple and standardized, already included in python | Limited UI, looks outdated out of the box, needs multiple dependencies to look modern, lacks more complex features | Python |
kivy | Mulit platform applications (both mobile and desktop) | Support for touch and gesture interfaces | Smaller community, less mature, less documentation | MIT |
pyside6 | Same as PyQt6 | Same as PyQt6 | Same as PyQt6 | LGPL |
Going forward with PyQt6 and Textualize.
Design file used to test the libraries:
Disclaimer: The design file will not represent a "good" use of the different libraries, as some are less flexible and some are more complex than others. The design file is only ment as a guide for testing out the libraries, hence the different implementations will not all look like the design file.
However, if a UI library is easy to customize and style accoring to predecided UX/UI guidelines, it will be easier to maintain and update the UI and a plus in the comparison.
pip install PyQt6
python pyqt/app.py
- Documentation for PyQt6 was generally hard to navigate and understand.
- Using the widgets was relatively straight forward.
- The styling was a bit more difficult to understand.
- Final code has good readability (better than tkinter for example, in my opinion)
- Feels possible to make a nice looking UI with PyQt6
pip install textual
python textualize/app.py
- Documentation is good and easy to understand and navigate
- The default widgets are easy to implement
- No support for images
- No support for changing font size and font type
- Not meant to be used as a "web looking" UI, more of a clickable CLI
- Limited customization options of the default widgets
Pyqt6 includes many different widgets that is useful for the DDS GUI. A demo (unstyled) of the different widgets is availible through:
python pyqt/widgets.py
For documentation of all widgets, visit: Qt documentation (this is acctually documentation for the PySide2 widgets but they should be the same) or Pyqt widget.
All textualize widgets can be found in their widget gallery.