System kontrolek (guictrl.ctrl) to centralna warstwa orkiestracji dla wszystkich kontrolek GUI.
guictrl.ctrl zarządza:
- Drzewem kontrolek — hierarchiczne relacje rodzic-dziecko
- Routingiem komend — dyspozycja akcji z kontrolek do obsługi aplikacji
- Komunikacją między kontrolkami — kontrolki sygnalizujące sobie nawzajem
- Rozszerzaniem przestrzeni nazw — dynamiczna modyfikacja przestrzeni nazw przez wtyczki
Definicja tagu → Parser tagów → Tworzenie przez fabrykę → Dołączenie rodzica → Układ → Wiązanie zdarzeń → Wyświetlenie
Kontrolki współdziałają przez:
- Routing komend — action="save_record" kieruje do obsługi zapisu aplikacji
- Propagację zdarzeń — zmiany wędrują w górę drzewa kontrolek
- System sygnałów — pub/sub między niespokrewnionymi kontrolkami
- Wiązanie danych — kontrolki powiązane z polami modelu aktualizują się automatycznie
Przestrzeń nazw kontrolek jest dynamicznie rozszerzana w czasie działania przez wtyczki:
# W guictrl.ctrl:
SchBaseCtrl = ... # Eksportowane do użycia przez wtyczki
HTML2 = None # Ustawiane przez wtyczki webview (cef, wxwebview) w czasie działania
Pozwala to wtyczkom zastępować lub rozszerzać funkcjonalność rdzenia kontrolek bez modyfikowania kodu frameworka.
Pytigon zapewnia kompleksowy zestaw standardowych kontrolek:
- Kontrolki wejścia — tekst, choice, combo, numeryczne, wybór daty/czasu (guictrl.input)
- Kontrolki przycisków — przyciski standardowe, zintegrowane z paskiem narzędzi (guictrl.button)
- Kontener siatki — układ kompatybilny z wxGrid z edytorami komórek (guictrl.grids)
- Kontener panelu — przewijalne, dokujące panele (guictrl.panels)
- Wyskakujące okna — modalne okna dialogowe, wyskakujące HTML, selektory typu select2 (guictrl.popup)
Zobacz dokumentację poszczególnych kontrolek dla szczegółowego użycia każdego typu.