Seite 1 von 1
Entry Problem
Verfasst: Sonntag 8. November 2015, 14:55
von HardwareManager
Hallo,
wenn ich den Code ausführe und "Hallo" eingebe
dann bekomme ich nur
H
Ha
Hal
Hall
als output.
Wie kann ich den letzten Buchstaben auch bekommen?
Code: Alles auswählen
from tkinter import *
def EHandler(event):
print(event.widget.get())
root = Tk()
E = Entry(root)
E.bind("<Key>", EHandler)
E.pack()
root.mainloop()
Re: Entry Problem
Verfasst: Sonntag 8. November 2015, 16:02
von Sirius3
Für tk-Entries nimmt man am besten StringVars, die den Inhalt repräsentieren:
Code: Alles auswählen
import tkinter as tk
class Main:
def __init__(self, root):
self.text = tk.StringVar(root)
self.text.trace('w', self.watch)
entry = tk.Entry(root, textvariable=self.text)
entry.pack()
def watch(self, *_):
print(self.text.get())
def main():
root = tk.Tk()
m = Main(root)
root.mainloop()
if __name__ == '__main__':
main()
Hat den Vorteil, dass auch Copy-Paste funktioniert.
Re: Entry Problem
Verfasst: Sonntag 8. November 2015, 18:01
von Alfons Mittelmeyer
Ich würde sagen, dass das ein Timing Problem ist. Wenn man die Taste drückt, ist der letzte Buchstabe gar noch nicht erfasst und Du fragst das Entryfeld zu früh ab. Eine Pause mit after sollte das Problem lösen, falls man es mit dem <key> event machen will. Aber die Lösung von Sirius3 ist, was man richtigerweise macht
Re: Entry Problem
Verfasst: Sonntag 8. November 2015, 19:28
von __deets__
Oder statt mit after rumzufuddeln einfach "<KeyRelease>".
Re: Entry Problem
Verfasst: Sonntag 8. November 2015, 20:54
von HardwareManager
Danke für die vielen Antworten
Es geht jetzt