Seite 1 von 1

Label von MenuItem in Callback-Funktion ändern

Verfasst: Freitag 21. September 2012, 14:54
von captain
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 :-)

Re: Label von MenuItem in Callback-Funktion ändern

Verfasst: Mittwoch 24. Oktober 2012, 14:07
von Bernhard_s
Hallo,

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

Code: Alles auswählen

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