>>Python>Validating Entry>Documentation
Documentation
class VEntry class VEntry

__init__(master, validate = None, initial = '', formatter = None, hook_update = None, **entry_kwargs)
  • validate is a function of one argument str, the string to be validated. Return value must be an instance of ventry.Validity, see below. Following validators are coded:
    • ventry.number
    • ventry.int
    • ventry.string
    • ventry.number_none, accepting numbers and 'None'.
    If validate is not given, ventry.string will be used.
  • initial is the initial value to be set. It must be valid, and will be formatted by formatter beforehand, thus all values accepted by formatter can be formatted.
  • formatter is a function of one argument, value, and returns a string being the display value of the underlying Tkinter.Entry.
  • hook_update is an argumentless function being called on input change, on initialisation and on .set() (for .set(), see there).
  • **entry_kwargs are arbitrary keyword arguments passed to the constructor and being passed on to the constructor of Tkinter.Entry.
  • validate ist eine Funktion mit einem Argument str, dem zu validierenden String. Rückgabewert muß eine Instanz von ventry.Validity sein, siehe unten. Folgende Validatoren sind kodiert:
    • ventry.number
    • ventry.int
    • ventry.string
    • ventry.number_none, welcher Zahlen und 'None' akzeptiert.
    Wenn validate nicht angegeben ist, wird ventry.string benutzt werden.
  • initial ist der anfängliche Wert, der gesetzt werden soll. Er muß gültig sein, und wird durch formatter zuvor formatiert werden, sodaß alle Werte formatiert werden können, welche von formatter akzeptiert werden.
  • hook_update ist eine argumentlose Funktion, welche bei Eingabeänderung, bei Initialisierung und bei .set() aufgerufen wird (zu .set() siehe dort).
  • **entry_kwargs sind beliebige dem Konstruktor übergebene Schlüsselwortargumente, welche zum Konstruktor von Tkinter.Entry weitergegeben werden.

initialise()
Binds <KeyRelease> to an internal function, thus enabling input response of the entry. Sets the initial value, calls .validate() and raises ValueError on invalid values. The reason for this is, that in the case of invalid initial values, .value isn't defined until valid input occurs. Bindet <KeyRelease> an eine interne Funktion, und ermöglicht damit Reaktion auf Eingabe in das Eingabefeld. Setzt den initialen Wert, ruft .validate() auf und wirft ValueError bei ungültigen Werten. Der Grund dafür ist, daß im Falle ungültiger Initialwerte .value bis zum Auftreten einer gültigen Eingabe nicht definiert ist.

validate(callback = True)
Calls the validator with the retrieved input string. On validity, updates .value, sets the background to white colour and calls .hook_update if defined and if callback is true. In case of invalidity the background will turn orange. Returns in both cases the validity of the current input string. Ruft den Validator mit dem abgerufenen Eingabestring auf. Bei Gültigkeit wird .value erneuert, der Hintergrund auf weiße Farbe gesetzt und .hook_update aufgerufen, falls dies definiert ist und callback wahr ist. Im Falle der Ungültigkeit wird der Hintergrund orange eingefärbt. Gibt in beiden Fällen die Gültigkeit des Eingabestrings zurück.

set(value, callback = True)
Sets the input string to the string returned by a call to formatter (see __init__()) with value as argument. Returns self.validate(callback = callback). Setzt den Eingabestring auf den String, der von einem Aufruf von formatter (siehe __init__()) mit value als Argument zurückgegeben wird. Gibt self.validate(callback = callback) zurück.

get()
Returns the current value. If the current input string is invalid, the current value is that of the last valid input string. Gibt den aktuellen Wert zurück. Wenn der aktuelle Eingabestring ungültig ist, ist der aktuelle Wert der des letzten gültigen Eingabestrings.

pack(*entry_args, **entry_kwargs)
Calls self.entry.pack(*entry_args, **entry_kwargs). Thus this function can be used as if it belongs to an Tkinter.Entry. Use this function to .pack() the VEntry. Ruft self.entry.pack(*entry_args, **entry_kwargs) auf. Daher kann diese Funktion benutzt werden, als wenn sie zu einem Tkinter.Entry gehören würde. Man benutze diese Funktion um das VEntry zu .pack()en.

pack_forget()
Calls self.entry.pack_forget(). Use this function to withdraw the VEntry when it was .pack()ed beforehand. Ruft self.entry.pack_forget() auf. Man benutze diese Funktion, um das VEntry verschwinden zu lassen, wenn es vorher ge.pack()t wurde.

grid(*entry_args, **entry_kwargs)
Calls self.entry.grid(*entry_args, **entry_kwargs). Use this function to .grid() the VEntry. Ruft self.entry.grid(*entry_args, **entry_kwargs) auf. Man benutze diese Funktion, um das VEntry zu .grid()en.

grid_forget()
Calls self.entry.grid_forget(). Use this function to withdraw the VEntry when it was .grid()ed beforehand. Ruft self.entry.grid_forget() auf. Man benutze diese Funktion, um das VEntry verschwinden zu lassen, wenn es vorher ge.grid()ed wurde.

disable()
Sets self.entry['state'] = 'disabled', thus disabling input to the VEntry and setting gray background. Setzt self.entry['state'] = 'disabled', schaltet daher Eingabe in das VEntry ab und setzt grauen Hintergrund.

enable()
Sets self.entry['state'] = 'normal', thus enabling input to the VEntry and restoring background color. Setzt self.entry['state'] = 'normal', ermöglicht daher Eingabe in das VEntry und stellt die Hintergrundfarbe wieder her.

destroy()
Calls self.entry.destroy(), thus destroying the VEntry. Ruft self.entry.destroy() auf, und zerstört damit das VEntry.


class NamedVEntry(VEntry) class NamedVEntry(VEntry)

class NamedVEntry is derived from class VEntry and possesses thus all properties a usual VEntry possesses, except for that the Tkinter emulation functions are overwritten. class NamedVEntry ist von class VEntry abgeleitet, und besitzt daher alle Eigenschaften, die ein gewöhnliches VEntry besitzt, mit der Ausnahme, daß die Tkinter-Emulationsfunktionen überschrieben sind.

__init__(master, name = None, column = None, row = None, mode = 'horizontal', validate = None, initial = '', formatter = None, label = None, hook_update = None, **ventry_kwargs)
  • name, when set, should be a string used as text for the Tkinter.Label used for labeling the VEntry input field. name is allowed to be left out only if label is specified instead.
  • column and row specify the place where to .grid() the label of the NamedVEntry. The entry field will be placed according to mode in one of the neighbouring grid cells. When one of both is not given, no automatical .grid()ing will be performed.
  • mode can be 'horizontal' or 'vertical'. For details, see grid().
  • validate, initial, formatter and hook_update are pure VEntry options, see there.
  • label is an optional argument, and can be used to hand over a widget to be used as the label widget instead of a Tkinter.Label. The widget has to support .grid() and optionally .grid_forget() (when used with .grid_forget()).
  • **ventry_kwargs are passed over to the constructor of VEntry and from there on to the constructor of the underlying Tkinter.Entry.
  • name sollte, wenn gesetzt, ein String sein, der als text für das zur Beschriftung des VEntries erzeugte Tkinter.Label benutzt wird. name kann ausschließlich dann weggelassen werden, wenn anstelledessen label spezifiziert wird.
  • column und row geben den Ort an, an den das Beschriftungselement des NamedVEntries ge.grid()ed werden soll. Das Eingabfeld wird entsprechend mode in einer der angrenzenden Zellen plaziert. Wenn eins von beiden nicht angegeben ist, wird kein automatisches .grid() ausgeführt werden.
  • mode kann auf 'horizontal' oder 'vertical' gesetzt werden. Für Details siehe grid().
  • validate, initial, formatter und hook_update sind reine VEntry-Optionen, siehe dort.
  • label ist ein optionales Argument, und kann dazu benutzt werden, ein Widget zu übergeben, welches anstelle eines Tkinter.Labels als Label-Widget benutzt wird. Das Widget muß .grid() und optional .grid_forget() (für Benutzung mit .grid_forget()) unterstützen.
  • **ventry_kwargs werden dem Konstruktor von VEntry übergeben und dort an den Konstruktor des darunterliegenden Tkinter.Entries weitergegeben.

pack(*args, **kwargs), pack_forget()
This two function raise NotImplementedError in NamedVEntry. Diese beiden Funktionen werfen in NamedVEntry NotImplementedError.

grid(column, row, **ventry_kwargs)
column and row specify the cell where to place the label.
  • If self.mode (see __init__()) is 'horizontal', the entry itself will be placed in the cell with coordinates (column + 1, row). The label is .grid()ed with kwargs sticky = Tkinter.E, the VEntry is .grid()ed with kwargs **ventry_kwargs, where 'sticky' is set to default Tkinter.W. Thus, without **ventry_kwargs given, the layout will be such that label and VEntry touch each other at the cell boundary. This behaviour can be overridden for the VEntry via **ventry_kwargs.
  • If self.mode is 'vertical', the entry will be placed in cell (column, row + 1). The label is .grid()ed with kwargs sticky = Tkinter.W, the VEntry is .grid()ed with kwargs **ventry_kwargs, where 'sticky' is set to default Tkinter.W (the same as for 'horizontal'). Thus, without **ventry_kwargs given, the layout will be such that label and VEntry are aligned at the left side of the column. Again, this behaviour can be overridden for the VEntry via **ventry_kwargs.
column und row spezifizieren die Zelle, in die das Label plaziert wird.
  • Wenn self.mode (siehe __init__()) 'horizontal' ist, wird das Eingabefeld selbst in der Zelle mit den Koordinaten (column + 1, row) plaziert werden. Die Beschriftung wird mit kwargs sticky = Tkinter.E ge.grid()ed, das VEntry wird mit kwargs **ventry_kwargs ge.grid()ed, wobei 'sticky' auf den Default Tkinter.W gesetzt ist. Ohne gegebene **ventry_kwargs wird das Aussehen daher so sein, daß die Beschriftung und das VEntry sich gegenseitig an der Zellgrenze berühren. Dieses Verhalten kann für das VEntry via **ventry_kwargs überschrieben werden.
  • Wenn self.mode 'vertical' ist, wird das Eingabefed in der Zelle (column, row + 1) plaziert werden. Das Beschriftungselement wird mit kwargs sticky = Tkinter.W ge.grid()ed, das VEntry wird mit kwargs **ventry_kwargs ge.grid()ed, wobei 'sticky' auf den Defaultwert Tkinter.W gesetzt wird (genauso wie für 'horizontal'). Ohne gegebene **ventry_kwargs wird das Aussehen daher so sein, daß Beschriftung und VEntry am linken Rand der Spalte ausgerichtet sind. Wieder kann dieses Verhalten für das VEntry via **ventry_kwargs überschrieben werden.

grid_forget()
Calls both for VEntry as for the label widget .grid_forget(). Use this function to withdraw the NamedVEntry when it was .grid()ed beforehand. Ruft sowohl für VEntry als auch für das Label-Widget .grid_forget() auf. Man benutze diese Funktion, um das NamedVEntry verschwinden zu lassen, wenn es vorher ge.grid()ed wurde.

destroy()
Calls both for VEntry as for the label widget .destroy(). Ruft sowohl für VEntry als auch für das Label-Widget .destroy() auf.


class Validity class Validity

__init__(valid, value = None)
Sets self.valid and self.value to the respective values. Setzt self.valid und self.value auf die entsprechenden Werte.


Validators Validatoren

All validators accept a string as single argument, and return an instance of class Validity with .validity set to the respective boolean and .value set to the interpreted value.
  • number(str) accepts all strings which represent a number.
  • int(str) accepts all strings wich represent an integer, e.g. "123", "456L", "789l" (with small L).
  • string(str) accepts everything and returns as value the string handed over.
  • number_none(str) accepts numbers and "None".
Alle Validatoren akzeptieren einen String als einzelnes Argument, und geben eine Instanz von class Validity zurück, mit auf den entsprechenden Boolean gesetztem .validity und .value auf den interpretierten Wert gesetzt.
  • number(str) akzeptiert alle Strings, welche eine Zahl repräsentieren.
  • int(str) akzeptiert alle Strings, welche eine Ganzzahl repräsentieren, z.B. "123", "456L", "789l" (mit kleinem L).
  • string(str) akzeptiert alles und gibt als Wert den übergebenen String zurück.
  • number_none(str) akzeptiert Zahlen und "None".

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

Impressum/Contact