ich möchte in einer Funktion den Text eines gtk.TextView - Elements ändern,
den neuen Text kurz anzeigen lassen
und dann nach einer kurzen Wartezeit den Text endgültig ändern.
Was ich nicht hinkriege, ist dass die erste Änderung auch angezeigt wird.
Die Anzeige wird erst aktualisiert wenn die 'Text-Änder-Funktion' sich beendet hat.
Hier mal etwas Source-Code um zu zeigen was ich meine:
es geht eigentlich nur um die kleine Funktion change_text():
Code: Alles auswählen
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import time
class TextViewExample:
def change_text(self, widget):
self.textbuffer.set_text("erster Text")
"""Jetzt soll der neue Text fuer eine Sekunde angezeigt werden, was aber NICHT funktioniert"""
#self.sw.show()
#self.textview.show()
#self.window.show()
time.sleep(1)
"""Jetzt wird der Text nochmal gaendert"""
self.textbuffer.set_text("zweiter Text")
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_resizable(True)
self.window.set_title("TextView Beispiel")
self.window.set_border_width(0)
box1 = gtk.VBox(False, 0)
self.window.add(box1)
box1.show()
box2 = gtk.VBox(False, 10)
box2.set_border_width(10)
box1.pack_start(box2, True, True, 0)
box2.show()
self.sw = gtk.ScrolledWindow()
self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.textview = gtk.TextView()
self.textbuffer = self.textview.get_buffer()
self.sw.add(self.textview)
self.sw.show()
self.textview.show()
box2.pack_start(self.sw)
hbox = gtk.HButtonBox()
box2.pack_start(hbox, False, False, 0)
hbox.show()
vbox = gtk.VBox()
vbox.show()
hbox.pack_start(vbox, False, False, 0)
button = gtk.Button("change text")
button.connect("clicked", self.change_text)
box2.pack_start(button, True, True, 0)
button.set_flags(gtk.CAN_DEFAULT)
button.grab_default()
button.show()
self.window.show()
def main():
gtk.main()
return 0
if __name__ == "__main__":
TextViewExample()
main()
Gruß
myra