Python: Tkinter Entry
Willemers Informatik-Ecke

Grundfunktionen

Das Entry erlaubt dem Benutzer die Eingabe einer Zeichenkette.
import tkinter
fenster = tkinter.Tk()
nameEntry = tkinter.Entry(fenster)
nameEntry.pack()
fenster.mainloop()
Der eingegebene Inhalt des Entrys wird über die Methode get() ausgelesen. Mit der Methode insert() kann ein Text in das Entry eingefügt werden. Der Parameter bestimmt die Position. Die Methode delete() löscht das Zeichen, dessen Index es als Parameter erhält. Werden zwei Parameter übergeben, wird der Bereich gelöscht. Als Positionsparameter kann auch END übergeben werden, um die Position hinter dem letzten Zeichen zu bezeichnen.

Validierung von Entry-Inhalten

Der Anwender ist manchmal nicht gewillt, genau das einzutippen, was sich der Software-Entwickler gedacht hat. Zum Glück sitzt der Programmierer am längeren Hebel. Über Validierungsfunktionen können Sie prüfen, ob die Eingabe Ihren Vorstellungen entspricht. Und sollte der Benutzer sich nicht bequemen, endlich das einzutippen, was Sie erwarten, dann sitzt der auch noch morgen vor Ihrem Programm - außer er schaltet den Computer aus.

def isOkay(why, where, what):
    return True

okayCommand = fenster.register(isOkay)

entry = Entry(self, validate='all',
         validatecommand=(okayCommand, '%d', '%i', '%S'))
  • validate: Der Wert bestimmt, in welchen Situationen eine über \var{validatecommand} angegebene Funktion aufgerufen wird.
    • 'focus': Beim Erhalt oder Verlust des Fokusses.
    • 'focusin': Wenn das Element den Fokus erhält.
    • 'focusout': Wenn das Element den Fokus verliert.
    • 'key': bei jedem Tastendruck
    • 'all': in all diesen Situationen
    • 'none': Validierung abschalten
  • validatecommand: Die registrierte Funktion, die aufgerufen wird, um den Inhalt des Eingabefelds zu prüfen.
  • invalidcommand: Die registrierte Funktion, die aufgerufen wird, wenn validatecommand False zurücklieferte.
Mit 'key' wird jeder Tastendruck geprüft und nur erlaubte durchgelassen. Mit 'focusout' erfolgt die Prüfung erst nach dem Verlassen. Die Funktion, die über invalidcommand angemeldet ist, wird aufgerufen, wenn validatecommand False zurücklieferte. Dann kann entweder der Wert zurückgesetzt werden oder vielleicht auch der Fokus zurück ins Feld. Die Werte, die an die Validierungsfunktion übergeben werden, werden durch die Prozentkürzel bestimmt. Dabei bedeuten diese:
  • %d: aktuelle Aktion (1=einfügen, 0=löschen, -1 anderes)
  • %i: Position in der Zeichenkette
  • %P: Inhalt des Entry, wenn die Änderung erlaubt ist
  • %s: Inhalt des Entry vor der Änderung
  • %S: Der Text, der eingefügt wird
  • %v: Die Art der Validierung, die gerade durchgeführt wird
  • %V: Die Art der Validierung, die den Callback auslöste (key, focusin, focusout, forced)
  • %W: Name des Widgets

Weiterführende Ausführungen