Jestem trochę zdezorientowany z niektórymi koncepcjami gtk i gnome. Próbuję uzyskać listę nie zminimalizowanych okien na moim pulpicie gnome2, ale po przeczytaniu dokumentacji pygtk i sprawdzeniu wyników, nie mogę zrozumieć wyników.Jak uzyskać listę wszystkich okien na moim pulpicie gnome2 za pomocą pygtk?
Żadne z dwóch opisów poniżej nie wydaje się działać.
Najpierw próbowałem to ..
>>> gtk.gdk.window_get_toplevels()
[<gtk.gdk.Window object at 0xb74339b4 (GdkWindow at 0x8a4c170)>]
>>> gtk.gdk.window_get_toplevels()[0].get_children()
[]
wówczas
>>> d = gtk.gdk.DisplayManager()
>>> d.get_default_display().get_screen(0).get_root_window().get_children()
[<gtk.gdk.Window object at 0x89dcc84 (GdkWindow at 0x8a4c170)>, <gtk.gdk.Window object at 0x89dccac (GdkWindow at 0x8a4c0c0)>]
Jak widać na wyjściu konsoli druga opcja zwraca dwa okna. Ale nie byłem w stanie dowiedzieć się, co to jest. Żaden z nich nie ma dzieci i zawsze uzyskuję te dwa okna bez względu na to, ile okien mam na moim pulpicie.
Czy ktoś mógłby wyjaśnić hierarchię obiektów typowego środowiska graficznego opartego na gtk? Nie mogę zrozumieć, dlaczego powyższy kod nie działa.
Proszę nie zamieszczać alternatywnych rozwiązań dotyczących zasobów do wnck, xlib, qt itp. Jestem bardziej zainteresowany zrozumieniem, co robię źle, niż w uzyskaniu porady takiej, jak sprawdzanie innych bibliotek.
Nie chcę być niegrzeczny, ale nie sądzę, że twoja odpowiedź jest zadowalająca. Pod koniec odpowiedzi, zdemaskowałeś swoją początkową analogię do czytnika bananów. Zdaję sobie sprawę z różnic między oknem gtk a dtk.gdk, jeśli przeczytałeś dokładnie moje pytanie, zauważysz, że było to trochę nie na temat ... chociaż wspomniałem, że byłem zdezorientowany, więc myślę, że twierdzić, że mea-culpa. – Pico
Domyślam się, dlaczego nie jest 'gtk.gdk.window_get_toplevels()' wyprowadzanie wynik, który opisałeś? Jeśli chodzi o sortowanie okien, miałem wrażenie, że mają atrybuty do tego wyłącznego celu. – Pico
Ok, domyślam się, że zinterpretowałem twoje pytanie, aby powiedzieć, dlaczego nie mogłeś uzyskać _widgets_ z okien. Nie wiem, dlaczego wywołanie GDK nie robi tego, co chcesz. Być może powinieneś spojrzeć na kod źródłowy libwnck, aby zobaczyć, jak działa? – ptomato