System okien Pytigon zapewnia powłokę aplikacji — ramki, notebooki i strony, które goszczą kontrolki.
| Ramka | Klasa | Przeznaczenie |
|---|---|---|
| Ramka aplikacji | guiframe.appframe |
Główne okno aplikacji — podklasa wx.Frame z osadzeniem Django, integracją paska narzędzi i zarządzaniem notebookiem |
| Ramka przeglądarki | guiframe.browserframe |
Ramka przeglądarki internetowej |
| Ramka formularza | guiframe.form |
Dynamiczne generowanie formularzy z definicji modeli Django lub układów opartych na tagach |
| Ramka bazowa | guiframe.baseframe |
Bazowa klasa ramki z obsługą inicjacji wtyczek |
Moduł guiframe.notebook zapewnia kontener notebooka w zakładkach:
guiframe.notebookpage zarządza cyklem życia pojedynczej stronyKażda strona w notebooku jest zarządzana przez guiframe.page:
- Dynamiczne tworzenie — strony tworzone na żądanie z konfiguracji
- Integracja z Django — strony mogą gościć widoki Django
- Cykl życia — zdarzenia initialize, activate, deactivate, close
Główne okno aplikacji:
from pytigon_gui.pytigon import main
# Uruchamia aplikację z:
# - Oknem dialogowym logowania
# - Głównym paskiem menu
# - Paskiem narzędzi (nowoczesny, standardowy lub drzewiasty)
# - Kontenerem notebooka dla stron potomnych
# - Mostkiem WebSocket dla komunikacji z backendem w czasie rzeczywistym
main()
appframe integruje:
1. Osadzanie Django — żądania HTTP do backendu o dane
2. System paska narzędzi — konfigurowalne paski narzędzi (nowoczesny typu wstążka, klasyczny, drzewiasty)
3. Zarządzanie notebookiem — interfejs z dokumentami w zakładkach
4. Inicjacja wtyczek — init_plugins() wykrywa i ładuje wtyczki przy starcie
Okna komunikują się przez:
- System sygnałów — sterowane zdarzeniami pub/sub między komponentami
- WebSocket — dwukierunkowa komunikacja w czasie rzeczywistym z backendem Django
- Operacje bezpieczne dla wątków — wx.CallAfter dla aktualizacji UI między wątkami przez guilib.threadwindow