PenguinTutor YouTube Channel

Learn GUI Programming with Graphical User Interface frameworks

When people think about computer programs then they will generally think about graphical programs things like your web browser, or word processor. Nowadays once you have a web browser there are also many online applications, but there is still a place for local programs running on your own computer.

The problem is when teaching programming we often start by teaching command line programs or applications without a graphical interface. There is a good reason for this in that GUI programming can be hard or involve a lot of code, although that’s not necessarily the case as I’ll explain later.

Introduction Video

This video explains some of the choices that can influence your decision of choosing a GUI framework, toolkit, library or module.

Different GUI Frameworks for Python

Some of the different GUI frameworks that I considered are:

  • TK / TKinter
  • GUIZero
  • Pygame
  • Pygame Zero
  • PyGTK / PyGObject
  • PyQt / PySide

Python PySide

For my projects I decided to go with Python PySide, although even then I had to choose specific versions. I used PySide2 (QT 5) for my model railway points controller GUI and PySide6 (QT 6) for my Laser Cutter Model Building Designer application.

The advantage to PySide 6 is that it is the current version and the core framework is easily installed on Linux and Windows. The disadvantage is that QWebEngineWidgets is hard to install which woud otherwise make it easy to integrate a web browser.

The advantage to PySide 2 is that it is included in the software repositories for major Linux distributions including Ubuntu and Raspberry Pi OS (based on Debian). This also makes it easy to use with the QWebEngineWidget widget.

Future plans

These are the projects I'm currently working on, although at the time of writing it's early days for both programs.

Graphical program designing in Python PySide 6

More information

See my other programming guides at:

Blog links and videos on programming

Previous Introduction to API
Introduction to API
Next Python PySide6
Python PySide6