>>Python>Validating Entry
Validating Entry
Download | Programmer's Guide (for 0.1.11b) | Documentation (for 0.1.11b) | Changelog Download | Anleitung für Programmierer (für 0.1.11b) | Dokumentation (für 0.1.11b) | Changelog

Summary Zusammenfassung

When dealing with graphical user interfaces (GUIs), input widgets are a necessity. To input numbers or short passages of text, entries are used. The Tkinter module provides the Tkinter.Entry widget. It has limited support for validation. Nevertheless the input of non-string data structures makes an dedicated eval call necessary, and support for temporarily incorrect input is lacked. Here an alternative wrap-around for Tkinter.Entry is shown, with touch and feel like the original, but extended functionality. Additionally to the validating functionality, labeling of the entry is possible, in horizontal or vertical alignment via .grid(), the native VEntry can be used also with .pack(). For user feedback, invalid input turns the background orange. The validating function set is comprised of validation-converters for some set of primitive data types, user-coded functions can be used. The widget module helps a lot simplifying code making it much less error-prone and more powerful, at least this is my experience. Full-fledged entry creation with callback and validation specification consumes not more than the call to the constructor and one method call. The retrieval of the converted value is one single call without arguments. Bei der Arbeit mit graphischen Benutzerschnittstellen (GUIs) sind Eingabewidgets unverzichtbar. Zur Eingabe von Zahlen und kurzen Textpassagen werden Entries benutzt. Das Tkinter-Modul stellt das Tkinter.Entry-Widget zur Verfügung. Dieses bietet begrenzte Unterstützung von Validierung. Nichtsdestotrotz macht die Eingabe von nicht-String-Datenstrukturen einen fest zugeordneten eval-Aufruf notwendig, und Unterstützung von zeitweilig falschen Eingaben fehlt. Hier wird ein alternatives Wrap-around für Tkinter.Entry gezeigt, mit Geschmack und Gefühl des Originals, aber erweiterter Funktionalität. Zusätzlich zur Validierungsfunktionalität ist eine Beschriftung des Eingabefeldes möglich, in horizontaler oder vertikaler Ausrichtung mittels .grid(), das reine VEntry kann auch mit .pack() benutzt werden. Zur Rückmeldung an den Benutzer färbt sich der Hintergrund des Eingabefeldes bei ungültiger Eingabe orange. Die Menge der Validierungsfunktionen besteht aus Validierungs-Konvertern für eine Menge von primitiven Datentypen, nutzerkodierte Funktionen können benutzt werden. Das Widget-Modul hilft sehr dabei, Code leistungsfähiger weniger fehleranfällig zu machen, zumindest ist das meine Erfahrung. Vollständige Eingabefelderzeugung mit Callback und Validierungs-Spezifikation benötigt nicht mehr als den Aufruf des Konstruktors und einen einzigen Methodenaufruf. Der Abruf des konvertierten Wertes ist ein einzelner Aufruf ohne Argumente.

Example Beispiel

A minimalistic example, yet exhibiting all features of ventry. This ventry was created by the call Ein minimalistisches Beispiel, welches trotzdem alle Merkmale von ventry zeigt. Dieses ventry wurde mit dem Aufruf
ventry.NamedVEntry(tk, name='Number:', column=0, row=0, validate=ventry.number, initial=0.0)
Its background turns orange when the input is not a number, yet invalid input is possible. The value retrieved by a .get() call will always be the last valid input. erzeugt. Sein Hintergrund färbt sich orange, wenn die Eingabe ungültig ist, nichtsdestotrotz ist ungültiger Input möglich. Der durch .get() erhaltene Wert wird stets die letze gültige Eingabe sein.

Maintained since: 8/09
$Last changed: 9/09$

Impressum/Contact