Label von MenuItem in Callback-Funktion ändern

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
captain
User
Beiträge: 3
Registriert: Donnerstag 21. Juni 2012, 14:42

Guten Tag,

ich arbeite mich gerade in die GUI Programmierung von Python ein. Genauer gesagt habe ich ein StatusIcon und Menu. In dem Menu befinden sich verschiedene MenuItems, welche ich unter anderem verändern möchte, wenn sie aktiviert wurden. Also definiere ich eine Funktion, welche aufgerufen werden soll, wenn besagtes MenuItem aktiviert wurde.
Der Funktion wird automatisch das Item übergeben, welches die Funktion ausgelöst hat. Mein erster Gedanke ist also, einfach das Label des übergebenen MenuItems ändern:

Code: Alles auswählen

def my_callback_function(self, item):
    item.get_child().set_text("one two testing")
Funktioniert leider nicht, obwohl item ja nur eine Referenz auf das eigentliche MenuItem ist, oder?

Zweiter Anlauf: Eine Klassenweite Variable.

Code: Alles auswählen

def build_menu(self, event_button, event_time):
    [...]
    self.my_item = new gtk.MenuItem("my item...")
    self.my_item.connect('activate', self.my_callback_function)
    self.my_item.show()
    menu.append(self.my_item)
Und in der Callback-Funktion:

Code: Alles auswählen

    self.my_item.get_child().set_text("my changed item...")
Leider bin ich wohl total auf dem Holzweg. Wenn ich den Befehl .set_text() in der Funktion build_menu aufrufe funktionierts übrigens. Wie ändert man also das Label eines MenuItems, wenn es aktiviert wurde? Vielleicht bin ich gerade etwas blind?!

Danke für eue Hilfe :-)
Bernhard_s
User
Beiträge: 8
Registriert: Dienstag 16. Oktober 2012, 10:39

Hallo,

habe Deine Frage eben erst gelesen.
Also bei mir funktioniert:

Code: Alles auswählen

item.set_label("dies ist ein test")
Gruß
Bernhard
Antworten