Cursor auf gtk.Window ändern
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die Dokumentation zu gtk.Window meint, dass es ein Attribut ``frame`` gibt, über das man auf das ``gtk.gdk.Window`` kommt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Tja, geht leider nicht:
window.frame gibt None zurück.
Hat sonst noch jemand eine Idee, wie man an das gdk.Window heran kommt bzw. wie man den Cursor verändert?
Code: Alles auswählen
cursor = gtk.gdk.Cursor(gtk.gdk.HAND2) # get a cursor
gdk_window = self.window.frame # get the gdk Window
gdk_window.set_cursor(cursor) # set the cursor
Hat sonst noch jemand eine Idee, wie man an das gdk.Window heran kommt bzw. wie man den Cursor verändert?
Das ``window``-Attribut benutzen und dabei den Fehler in der Dokumentation ignorieren, die meint, dass das ein `gtk.Window()` sei, was natürlich völliger Quatsch ist. Und am besten gleich noch den Bug melden.
Edit: Ah, beim ``window``-Attribut stimmt die Dokumentation, bei ``get_window()`` stehts falsch.
Edit: Ah, beim ``window``-Attribut stimmt die Dokumentation, bei ``get_window()`` stehts falsch.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
`gtk.Window` erbt von `gtk.Widget`, also sollte es das eigentlich schon haben. Laut Dokumentation gibt es das Attribut seit PyGTK 2.4, was schon relativ alt ist. Es gibt noch die `get_window()`-Methode, aber die gibt es erst seit 2.14, und das ist relativ neu.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Code: Alles auswählen
In [3]: type(gtk.Window().window)
Out[3]: <type 'NoneType'>
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Dass man mit der window-Variable irgendwie nicht sehr weit kommen wird?!Trundle hat geschrieben:Und das soll jetzt genau was zeigen?
Solange das Fenster nicht "realisiert" (für das Wort suche ich immer noch eine schöne Übersetzung) ist, ist es auch mit keinem Gdk-Fenster verbunden, das ist alles.
Code: Alles auswählen
>>> w = gtk.Window()
>>> w.window
>>> w.show()
>>> w.window
<gtk.gdk.Window object at 0x1f33d20 (GdkWindow at 0x1bff170)>
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Ja, so geht es. Hier mal Beispiel Code zum Wiederverwenden:
Cursor ändern:
Cursor wieder normal:
Danke
Cursor ändern:
Code: Alles auswählen
cursor = gtk.gdk.Cursor(gtk.gdk.HAND2) # get a cursor
gdk_window = self.window.window # get the gdk Window
gdk_window.set_cursor(cursor) # set the cursor
Code: Alles auswählen
gdk_window = self.window.window # get the gdk Window
gdk_window.set_cursor(None) # set the cursor