GTK+, cd 1 grudnia 2011
Plan wykładu Podstawy pracy z Glade Gazpacho 1 Podstawy pracy z Glade Gazpacho 2 Zadania okresowe Prawdziwe wątki 3
Co to jest Podstawy pracy z Glade Gazpacho Glade to graficzne narzędzie do projektowania interfejsów dla środowiska GTK+/.
Schemat działania (Glade-3) Podstawy pracy z Glade Gazpacho Glade produkuje plik XML, w którym jest opisany interfejs; Aplikacja wczytuje ten plik i buduje interfejs; Glade-3 jest niezależny od języka.
Podstawy pracy z Glade Gazpacho
Użycie projektu Podstawy pracy z Glade Gazpacho GtkBuilder Biblioteka budująca z XML interfejs graficzny.
Użycie projektu Podstawy pracy z Glade Gazpacho GtkBuilder Biblioteka budująca z XML interfejs graficzny. libglade Poprzednia biblioteka, używa innego, niekompatybilnego XML a.
Użycie projektu Podstawy pracy z Glade Gazpacho GtkBuilder Biblioteka budująca z XML interfejs graficzny. libglade Poprzednia biblioteka, używa innego, niekompatybilnego XML a. Konwersja plików gtk builder convert
Budowanie okna Podstawy pracy z Glade Gazpacho Ważne Trzeba pamiętać, że kontrolki mają swoje nazwy.
Budowanie okna Podstawy pracy z Glade Gazpacho Ważne Trzeba pamiętać, że kontrolki mają swoje nazwy. builder = gtk.builder() builder.add from file( wyklad.glade ) window = builder.get object( okno ) window.show() gtk.main()
Podłączanie sygnałów Podstawy pracy z Glade Gazpacho Ważne Podczas budowania interfejsu trzeba wskazać, jakim sygnałom odpowiadają jakie procedury obsługi (handlery).
Podłączanie sygnałów Podstawy pracy z Glade Gazpacho Ważne Podczas budowania interfejsu trzeba wskazać, jakim sygnałom odpowiadają jakie procedury obsługi (handlery). builder = gtk.builder() builder.add from file( wyklad.glade ) builder.connect signals({ on window destroy : gtk.main quit }) window = builder.get object( okno ) window.show() gtk.main()
Podłączanie menu Podstawy pracy z Glade Gazpacho Łatwe Tak samo jak w przypadku innych sygnałów.
Podłączanie menu Podstawy pracy z Glade Gazpacho Łatwe Tak samo jak w przypadku innych sygnałów. Dokładniej: trzeba w Glade wskazać procedurę obsługi (wpisać jej nazwę) dla sygnału activated; powiązać nazwę z prawdziwą procedurą: builder.connect signals({ on window destroy : gtk.main quit, on menu koniec : lambda widget : akcja(widget) })
Bardziej obiektowo Podstawy pracy z Glade Gazpacho class Rysownik: def init (self): builder = gtk.builder() builder.add from file( wyklad.glade ) self.window = builder.get object( okno ) builder.connect signals(self) def on window destroy(self, widget, data=none): pass def koniec(self, widget): pass rysunek = Rysownik() rysunek.window.show() gtk.main()
Gazpacho Podstawy pracy z Glade Gazpacho Inne narzędzie (napisane w PyGTK) do projektowania interfejsów graficznych, produkuje pliki zgodne z GtkBuilder.
Gazpacho Podstawy pracy z Glade Gazpacho Inne narzędzie (napisane w PyGTK) do projektowania interfejsów graficznych, produkuje pliki zgodne z GtkBuilder. Kiwi Z projektem Gazpacho jest związana biblioteka Kiwi (napisana w Pythonie), która w założeniu ma być lepszym GTK+.
Plan wykładu Zadania okresowe Prawdziwe wątki 1 Podstawy pracy z Glade Gazpacho 2 Zadania okresowe Prawdziwe wątki 3
Timeouty Zadania okresowe Prawdziwe wątki Uruchamianie zadań okresowych: id = gobject.timeout add(milisec, heart beat,...)
Timeouty Zadania okresowe Prawdziwe wątki Uruchamianie zadań okresowych: id = gobject.timeout add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana.
Timeouty Zadania okresowe Prawdziwe wątki Uruchamianie zadań okresowych: id = gobject.timeout add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana. Wyłączenie zadania gobject.source remove(id)
Funkcje idle Zadania okresowe Prawdziwe wątki Co program robi jak nic nie robi?
Implementacja funkcji Zadania okresowe Prawdziwe wątki Uruchamianie zadań gdy nic się nie dzieje: id = gobject.idle add(milisec, heart beat,...)
Implementacja funkcji Zadania okresowe Prawdziwe wątki Uruchamianie zadań gdy nic się nie dzieje: id = gobject.idle add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana.
Implementacja funkcji Zadania okresowe Prawdziwe wątki Uruchamianie zadań gdy nic się nie dzieje: id = gobject.idle add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana. Wyłączenie zadania gobject.source remove(id)
Monitorowanie we/wy Zadania okresowe Prawdziwe wątki Można kontrolować otwarte pliki (w tym pliki związane z sieciami, gniazdami czy potokami). Co możemy monitorować (warunki) gobject.io IN są dane gotowe do odczytu gobject.io OUT plik jest gotów do zapisu gobject.io PRI są pilne dane do odczytu gobject.io ERR błąd gobject.io HUP zerwanie połączenia
Jak monitorować Zadania okresowe Prawdziwe wątki Włączenie monitorowania id = gobject.io add watch(plik(otwarty), warunek, monitor)
Jak monitorować Zadania okresowe Prawdziwe wątki Włączenie monitorowania id = gobject.io add watch(plik(otwarty), warunek, monitor) funkcja monitorująca def monitor(źródło, warunek): Funkcja powinna zwrócić True jeśli ma dalej monitorować.
Korzystanie z wątków Zadania okresowe Prawdziwe wątki Dobra wiadomość threading.thread działa.
Korzystanie z wątków Zadania okresowe Prawdziwe wątki Dobra wiadomość threading.thread działa. Zła wiadomość Ale nie jest to takie proste.
Wersja 1. Zadania okresowe Prawdziwe wątki Wątek nie odwołuje się do GUI Przed wywołaniem gtk.main() import gobject gobject.threads init()
Przykład Zadania okresowe Prawdziwe wątki button.connect( clicked, lambda x: threading.thread(target=hello).start())
Interakcja wątków z GUI Zadania okresowe Prawdziwe wątki Inicjowanie gtk.gdk.threads init()
Uruchomienie aplikacji Zadania okresowe Prawdziwe wątki gtk.threads enter() gtk.main() gtk.threads leave()
Szkielet kodu w wątku Zadania okresowe Prawdziwe wątki gtk.threads enter() try: myentry.set text( foo ) finally: gtk.threads leave()
Zadania okresowe Prawdziwe wątki Szkielet kodu w wątku, wersja polecana with gtk.gdk.lock:...
Plan wykładu 1 Podstawy pracy z Glade Gazpacho 2 Zadania okresowe Prawdziwe wątki 3
Co to jest GNU Network Object Model Environment
A co jest ważne Więcej kontrolek (rozbudowane GTK+); desktop, aplikacje mogą się integrować z desktopem; własne aplety (dla środowiska ); wsparcie dla tworzenia róznych wersji językowych.
GLADE i używa LibGlade
Przykład import gtk import gnome.ui import gtk.glade gnome.init( Wykład, 0.1 ) aplikacja = gtk.glade.xml( gnome.glade ) gtk.main()
Zła wiadomość Są błędy, ale libglade nie jest już naprawiane.
Jak ktoś potrzebuje aplikacja = gnome.ui.app( Aplikacja, Okno aplikacji ) aplikacja.show() gtk.main()