Window Cursor setzen bei GTK3

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
rhersel
User
Beiträge: 105
Registriert: Mittwoch 3. Dezember 2008, 11:29

Die alte Methode geht mit GTK3 nicht mehr:

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
Wenn ich es so mache:

Code: Alles auswählen

cursor = Gdk.Cursor.new(Gdk.CursorType.HAND2)
gdk_window = self.window.window
gdk_window.set_cursor(cursor)
funktioniert die erste geänderte Zeile aber 'self.window.window' geht nicht mehr. Weiss jemand wie man von einem GTK-Window das GDK-Window bekommen kann?
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Soweit ich das gesehen habe schon so:
http://people.gnome.org/~johnp/girdocsa ... alize.html

Sicher das das Fenster schon ein gdk.Window hat? Sonst einfach window.realize() aufrufen.

Gruß
Andy
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
rhersel
User
Beiträge: 105
Registriert: Mittwoch 3. Dezember 2008, 11:29

GtkWindow stammt von GtkWidget ab. GtkWidget hat laut Gtk3 Dokumentation sowohl das Property 'window' als auch die Methode 'get_window'. Beides sollte das GdkWindow liefern bzw. NULL falls es noch nicht realized ist. Mein Fenster ist aber realized. Die Codezeile 'self.window.window' müsste entweder das GdkWindow oder zumindest NULL liefern. Stattdessen behauptet Python, das Objekt 'window' würde das Property 'window' nicht kennen. Ich versuche es dann mal mit der Methode: 'self.window.get_window()' und berichte dann ob es so funktioniert.
rhersel
User
Beiträge: 105
Registriert: Mittwoch 3. Dezember 2008, 11:29

Mit 'get_window()' funktioniert es:

Code: Alles auswählen

cursor = Gdk.Cursor.new(Gdk.CursorType.HAND2)
gdk_window = self.window.get_window()
gdk_window.set_cursor(cursor)
Antworten