Natywne kontrolki GUI Pytigon zorganizowane są w warstwową architekturę zbudowaną na wxPython.
guictrl.basectrl — Klasy bazowe (SchBaseCtrl)
└── guictrl.ctrl — Główna orkiestracja i zarządzanie drzewem kontrolek
├── guictrl.input — Tekst, choice, combo, numeryczne, wybór daty/czasu
├── guictrl.button — Przyciski standardowe i paska narzędzi
├── guictrl.grids — Kontenery Grid/wxGrid z edytorami komórek
├── guictrl.panels — Przewijalne kontenery paneli
└── guictrl.popup — Wyskakujące okna dialogowe i selektory
Wszystkie kontrolki GUI Pytigon dziedziczą z SchBaseCtrl, która zapewnia:
- Obsługę atrybutów — atrybuty tagów → właściwości widgetu
- Zarządzanie układem — automatyczny układ oparty na sizerach
- Wiązanie zdarzeń — zdarzenie → podłączenie metody obsługi
- Routing komend — komendy akcji → dyspozycja aplikacji
Moduł guictrl.factory implementuje wzorzec Fabryki:
- Rejestracja — mapowanie nazw tagów na klasy kontrolek
- Tworzenie — tworzenie instancji kontrolek z definicji tagów
- Wyszukiwanie — znajdowanie klas kontrolek po nazwie
Pozwala to parserowi tagów pozostać niezależnym od implementacji kontrolek — deleguje tworzenie do fabryki.
Moduł guictrl.display obsługuje renderowanie kontrolek do kontekstów urządzenia wxPython, współdzieląc abstrakcję kontekstu urządzenia z pytigon_lib.schhtml dla spójnego renderowania między pulpitem a wyjściem dokumentu.