Widgets in Qt are built on bitmap graphics — drawing pixels on a rectangular canvas to
construct the "widget". To be able to create your own custom widgets you first need to understand
how the QPainter
system works and what you can do with it. In this PyQt6 tutorial we'll go
from basic bitmap graphics to our own entirely custom widget.
Custom Widgets
Designing your own custom widgets in PyQt6
Start with “QPainter and Bitmap Graphics”