Tkinter.Text "read-only"...
Verfasst: Mittwoch 16. Oktober 2013, 22:18
Hab noch mal einige änderungen vorgenommen. Mit https://github.com/jedie/DragonPy/commi ... fa2400b2d0 wird nun Zeichen für Zeichen übertragen.
Nun macht das "Echo" auch sinn, weil ich es so gemacht habe, das nicht direkt in geschrieben wird. Allerdings ist das IMHO unschön gelöst:
Ich möchte Text darstellen, den der User allerdings nicht direkt eingeben kann, sondern nur Programmseitig.
Ähnlich wie ein Terminalfenster/Konsole in dem der User was eingeben kann, aber die Zeichen der Eingabe immer vom Programm eingefügt wird.
z.Z. ist meine Lösung eine Tkinter.Text() Box. Fange die Eingabe-Zeichen mit self.root.bind("<Key>", self.event_key_pressed) ab und nehme da die einzelnen Zeichen in den buffer auf.
hier: https://github.com/jedie/DragonPy/blob/ ... #L244-L266
Eingefügt werden die Zeichen mit self.text.insert("end", char) hier: https://github.com/jedie/DragonPy/blob/ ... 09.py#L327
Damit nichts direkt in Tkinter.Text() geschrieben wird entziehe ich dem immer wieder den Fokus mit self.root.focus_set() hier: https://github.com/jedie/DragonPy/blob/ ... 09.py#L269
Dachte eigentlich ich könnte state=Tkinter.DISABLED nutzten. Aber dann funktioniert self.text.insert("end", char) nicht.
Auch das geht nicht:
Ideen?
EDIT: Ist für DragonPy -> http://www.python-forum.de/viewtopic.ph ... 19#p247319
Nun macht das "Echo" auch sinn, weil ich es so gemacht habe, das nicht direkt in geschrieben wird. Allerdings ist das IMHO unschön gelöst:
Ich möchte Text darstellen, den der User allerdings nicht direkt eingeben kann, sondern nur Programmseitig.
Ähnlich wie ein Terminalfenster/Konsole in dem der User was eingeben kann, aber die Zeichen der Eingabe immer vom Programm eingefügt wird.
z.Z. ist meine Lösung eine Tkinter.Text() Box. Fange die Eingabe-Zeichen mit self.root.bind("<Key>", self.event_key_pressed) ab und nehme da die einzelnen Zeichen in den buffer auf.
hier: https://github.com/jedie/DragonPy/blob/ ... #L244-L266
Eingefügt werden die Zeichen mit self.text.insert("end", char) hier: https://github.com/jedie/DragonPy/blob/ ... 09.py#L327
Damit nichts direkt in Tkinter.Text() geschrieben wird entziehe ich dem immer wieder den Fokus mit self.root.focus_set() hier: https://github.com/jedie/DragonPy/blob/ ... 09.py#L269
Dachte eigentlich ich könnte state=Tkinter.DISABLED nutzten. Aber dann funktioniert self.text.insert("end", char) nicht.
Auch das geht nicht:
Code: Alles auswählen
self.text.state = Tkinter.NORMAL
self.text.insert("end", char)
self.text.state = Tkinter.DISABLED
self.root.update()
EDIT: Ist für DragonPy -> http://www.python-forum.de/viewtopic.ph ... 19#p247319