Hallo,
ich bastle an einer Dateneingabe Oberfläche mit Tkinter und wollte fragen, ob es beim Entry-Widget die Möglichkeit gibt, die Eingabe auf 4 Zeichen zu beschränken?
LG
Tgooper
Eingabe Beschränkung
am schnellsten geht es jedoch in dem du beim lesen begrenzt
Code: Alles auswählen
eingabe = Entry(root,background='yellow',foreground='blue',font='courier',width=4) ## Eingabezeile erzeugen
eingabe.pack()## und anzeigen
## und beim lesen begrenzen ///// eingabe.delete(4,END)
`fixed` gibt's nicht und auch der andere Vorschlag von sea-live begrenzt die Eingabe nicht, sondern macht nur die Anzeige des Eingabefeldes kleiner.
Man kann sich so ein `Entry` aber selber basteln:
Man kann sich so ein `Entry` aber selber basteln:
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
class MaxLengthEntry(tk.Entry):
def __init__(self, master, max_length, textvariable=None, **args):
self.max_length = max_length
self._textvariable = textvariable
if self._textvariable is None:
self._textvariable = tk.StringVar()
self._old_value = self._textvariable.get()
self._textvariable.trace('w', self.validate)
tk.Entry.__init__(self,
master,
textvariable=self._textvariable,
width=max_length,
**args)
def validate(self, *args):
text = self.get()
if len(text) <= self.max_length:
self._old_value = text
else:
self._textvariable.set(self._old_value)
def main():
root = tk.Tk()
entry = MaxLengthEntry(root, 4)
entry.pack()
root.mainloop()
if __name__ == '__main__':
main()
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, Tkinter gibt es nur für Python. Tkinter nutzt aber ein Toolkit namens Tk, dass eigentlich immer im selben Atemzug wie Tcl genannt wird. Daher ist es möglich, Tk in Tcl oder anderen Sprachen die entsprechende Bindings haben zu nutzen.sea-live hat geschrieben:kann es sein das es Tkinter auch für andere Sprachen gibt ZB perl
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Die Tk-Anbindung von Perl, also die Kombination Perl/Tk, ist schon auch recht bekannt.
Wenn Du auch Perl installiert hast (z.B. unter Linux), lohnt es sich oft auch für Python/Tkinter mal in "perldoc Tk", in diesem Fall also in "perldoc Tk::Entry", zu lesen.
Gruß
Wenn Du auch Perl installiert hast (z.B. unter Linux), lohnt es sich oft auch für Python/Tkinter mal in "perldoc Tk", in diesem Fall also in "perldoc Tk::Entry", zu lesen.
Gruß
Hallo BlackJack
Mir ist die Zeile 12 in deinem Code-Snippet aufgefallen
Die Methode 'trace' ist neu für mich. Hast du diese selber erfunden oder gibt es eine nähere Beschreibung hierfür. Ich habe mich in meinen Unterlagen halb zu Tode gesucht.
Gruss wuf
Mir ist die Zeile 12 in deinem Code-Snippet aufgefallen
Code: Alles auswählen
self._textvariable.trace('w', self.validate)
Gruss wuf
Take it easy Mates!
Schritt 1:wuf hat geschrieben:Mir ist die Zeile 12 in deinem Code-Snippet aufgefallen
Die Methode 'trace' ist neu für mich. Hast du diese selber erfunden oder gibt es eine nähere Beschreibung hierfür. Ich habe mich in meinen Unterlagen halb zu Tode gesucht.Code: Alles auswählen
self._textvariable.trace('w', self.validate)
Code: Alles auswählen
>>> import Tkinter
>>> root = Tkinter.Tk()
>>> print dir(Tkinter.StringVar())
['__del__', '__doc__', '__eq__', '__init__', '__module__', '__str__', '_default', '_master', '_name', '_tk', 'get', 'set', 'trace', 'trace_variable', 'trace_vdelete', 'trace_vinfo']
Schritt 2:
Tkinter.py öffnen und nach "trace" suchen.
Zeile 207 (in meiner Version): Fündig werd!
@wuf: http://effbot.org/tkinterbook/variable.htm
Der Effbot hat auch irgendwo ein ähnliches Beispiel wie meins in dem Wiki.
Der Effbot hat auch irgendwo ein ähnliches Beispiel wie meins in dem Wiki.