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