Ich schreibe ein GUI-Programm in Tkinter. Ich versuche, den Inhalt des Text-Widget zu verfolgen, indem Sie Text.get() Methode verwenden.
Ich habe gehört, dass ich bekommen kann (1.0, 'Ende'), um aktuelle Inhalte auf dem Widget geschrieben zu bekommen, aber es gibt nicht den neuesten Charakter Ich tippte.(Gelöst) get() Methode von Tkinter Text Widget - gibt nicht das letzte Zeichen
Dies ist ein einfaches Beispiel, das ich schrieb:
import Tkinter as tk
class TestApp(tk.Text, object):
def __init__(self, parent = None, *args, **kwargs):
self.parent = parent
super(TestApp, self).__init__(parent, *args, **kwargs)
self.bind('<Key>', self.print_contents)
def print_contents(self, key):
contents = self.get(1.0, 'end')
print '[%s]' % contents.replace('\n', '\\n')
if __name__ == '__main__':
root = tk.Tk()
app = TestApp(root, width = 20, height = 5)
app.pack()
root.mainloop()
Wenn ich tippe 'abcd', er druckt 'abc \ n', nicht 'abcd \ n'. ('\ N' wird nach der letzten Zeile des Text-Widget automatisch hinzugefügt.)
Wie kann ich 'abcd \ n', anstelle von 'abc \ n' bekommen?
[gelöst]
Dank Bryan Oakley und Yasser Elsayed, löste ich das Problem, indem
self.bind('<Key>', self.print_contents)
auf die folgende ersetzt:
self.bind('<KeyRelease>', self.print_contents)
http://StackOverflow.com/a/11542200/7432 –
@BryanOakley Danke für den Link! Dieser Beitrag hat mir geholfen zu verstehen, wie (...). Bind() in Tkinter funktioniert. – hunminpark