Textfeld Text zuweisen

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
pe
User
Beiträge: 44
Registriert: Dienstag 2. Februar 2010, 18:33

Hallo,

ich bin auf das Entwicklungsframework "Quickly" gestossen, welches unter Ubuntu sehr hilft Programme zu schreiben (gute Quellen: http://www.youtube.com/watch?v=9EctXzH2 ... re=related und https://wiki.ubuntu.com/Quickly). Es paketiert das Programm z.B. mit nur einem Befehl und hat hilfreiche Befehle für das designen und programmieren der Anwendung. Diese vorgehensweise lehnt sich an CakePHP oder RubyOnRails an.

Jetzt habe ich mit Glade ein Textfeld erstellt, welches beim Aufruf meines Fensters erscheint. Allerdings schaffe ich es leider nicht, dem Textfeld Text zuzuweisen. Mein derzeitiger Event-Handler sieht so aus:

Code: Alles auswählen

    def on_button1_clicked(self, widget, data=None):
	testbox = TestDialog.TestDialog()
	response = testbox.run()
	return self.builder.get_object("textview1").set_text('foobar')
	testbox.destroy()
Wie erwähnt erscheint das Fenster, doch leider wird der Text "foobar" nicht im Textfeld angezeigt. So sieht das Programm mit dem zugehörigen Textfeld aus:
Bild

Warte gespannt auf Eure Antwort und bedanke mich hiermit im Voraus.

HAND
Ich bedanke mich für Eure Zeit und Aufmerksamkeit.
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Eigentlich ist jedes Element von PyGTK sehr gut dokumentiert: http://www.pygtk.org/docs/pygtk/class-gtktextview.html

Für deinen Fall würde ich dir eher ein gtk.Entry() empfehlen - das kannst du mit set_text() füllen. Textviews arbeiten mit Buffern (siehe Link oben).

Übrigens: Code nach einer Return-Anweisung kommt niemals zur Ausführung.

Schönen Gruß,

brb
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Selbst wenn es bereits ein `gtk.Entry()` sein sollte und deshalb `set_text()` tatsächlich richtig ist: ``testbox.run()`` führt sehr wahrscheinlich den Dialog aus und kehrt erst zurück, wenn der Dialog bereits geschlossen wurde (deswegen ja auch "response = ..."). Und dann ist das Setzen vom Text an der Stelle eben einfach viel zu spät.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Antworten