5 Stimmen

Schwierigkeiten beim Aktualisieren des Label-Textes

Umgebung:

  • Benutzeroberfläche mit Glade3 erstellt.
  • Backend ist in Python mit der GTK+ Builder-Bibliothek geschrieben.

-

Obwohl ich die Methode kenne, die ich verwenden muss, um den Text eines Labels zu aktualisieren (label.set_text("string")), habe ich Schwierigkeiten, das Label-Objekt im Python-Code zu erhalten.

So sieht mein Code aus:

#!/usr/bin/python
# Dateiname: HalloPython.py
# Autor: Andrew Hefley Carpenter
# Datum: 18. August 2010

import sys
import gtk

class HalloPython:

    def on_window_destroy(self, widget, data=None):
        gtk.main_quit()

    def __init__(self):

        builder = gtk.Builder()
        builder.add_from_file("HelloPython.xml") 

        self.window = builder.get_object("window")
        builder.connect_signals(self)   

    def on_button1_clicked(self, widget):

        print "Hallo Welt!"  
        widget.set_label("Hallo Welt!")
        #Ich möchte aktualisieren 

if __name__ == "__main__":
    editor = HalloPython()
    editor.window.show()
    gtk.main()

Endziel: Ich möchte "Objekt X" mit seiner set_text-Methode aktualisieren, nachdem der Rückruf an "Objekt Y" (in diesem Fall button1) durch "on_button1_clicked" behandelt wurde.

3voto

anthony Punkte 39130

Der Widget-Parameter für on_button1_clicked ist ein gtk.Button, nicht ein gtk.Label. gtk.Button verfügt über eine Komfort-API-Methode namens set_label().

Dies funktioniert nur, wenn das Kind von Gtk.Button ein gtk.Label ist. Dies ist der Standard beim Erstellen eines neuen Buttons in Glade-3, aber wenn Sie den Inhalt des Buttons geändert haben, wird dies nicht funktionieren und Sie benötigen eine Referenz zum gtk.Label-Widget selbst.

BEARBEITEN (Code zur Aktualisierung des Labels):

class HelloPython:
    def on_window_destroy(self, widget, data=None):
        gtk.main_quit()

    def __init__(self):
        builder = gtk.Builder()
        builder.add_from_file("HelloPython.xml") 
        self.window = builder.get_object("window")
        self.label = builder.get_object("label1") # Referenz auf das Label erhalten
        builder.connect_signals(self)   

    def on_button1_clicked(self, widget):
        #widget.set_label("Hallo Welt!") this would set the button's text
        self.label.set_text("Hallo Welt!") # dies setzt den Text des Labels

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X