Sono un po 'confuso con alcuni concetti gtk e gnome. Sto cercando di ottenere l'elenco delle finestre non ridotte al minimo sul mio desktop gnome2, ma dopo aver letto la documentazione di pygtk e aver esaminato i risultati, non riesco a capire i risultati.Come posso ottenere un elenco di tutte le finestre sul mio desktop gnome2 usando pygtk?
Nessuno dei due frammenti di seguito sembra funzionare.
Per prima cosa ho provato questo ..
>>> gtk.gdk.window_get_toplevels()
[<gtk.gdk.Window object at 0xb74339b4 (GdkWindow at 0x8a4c170)>]
>>> gtk.gdk.window_get_toplevels()[0].get_children()
[]
allora questo
>>> 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)>]
Come si vede nella uscita della console, la seconda opzione restituisce due finestre. Ma non sono stato in grado di capire cosa siano. Nessuno di loro ha figli e io ho sempre queste due finestre indipendentemente da quante finestre ho sul mio desktop.
Qualcuno potrebbe spiegare la gerarchia degli oggetti del tipico ambiente desktop basato su gtk? Non riesco a capire perché il codice sopra non funziona.
Si prega di astenersi dal pubblicare soluzioni alternative a wnck, xlib, qt, ecc. Sono più interessato a capire cosa sto facendo male che a ottenere consigli come noi controllando altre librerie.
Non intendo essere scortese, ma non credo che la vostra risposta sia soddisfacente. Alla fine della tua risposta, hai sfatato l'analogia iniziale con il lettore cd-banana. Sono consapevole delle differenze tra una finestra gtk e una finestra dtk.gdk, se leggete attentamente la mia domanda, noterete che era un po 'fuori tema ... anche se ho menzionato che ero confuso, quindi suppongo di rivendicare mea-culpa. – Pico
Immagino che la linea di fondo sia, perché non 'gtk.gdk.window_get_toplevels()' sta emettendo il risultato che hai descritto? Per quanto riguarda l'ordinamento delle finestre, avevo l'impressione che avessero attributi per quell'unico scopo. – Pico
Ok, immagino di aver interpretato la tua domanda nel senso che non potresti avere il bambino _widgets_ delle finestre. Non so perché la chiamata GDK non stia facendo quello che vuoi. Forse dovresti guardare il codice sorgente di libwnck per vedere come funziona lì? – ptomato