Skip to content

ebba-eliasson/dds-gui-poc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DDS GUI POC

Goal

  1. Investigate the use of PyQt6 and Textualize to create a GUI for the DDS.
  2. Create a mock up of a GUI using the chosen library.

Main Criterias for the GUI Framework/Library

  • Easy to understand and use
  • Easy to maintain
  • Good documentation and community support

GUI Framework/Library

Choosing the GUI Framework/Library

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:

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.

Prototype

Design file used to test the libraries:

Image

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.

PyQt6

Installation

pip install PyQt6

Running the application

python pyqt/app.py

Comments

  • 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

Textualize

Installation

pip install textual

Running the application

python textualize/app.py

Comments

  • 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

Widgets

PyQt6

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.

Textualize

All textualize widgets can be found in their widget gallery.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages