Seite 2 von 2

Verfasst: Dienstag 30. September 2008, 15:35
von wuf
Hallo yipyip

Hier meine Endlösung. Markierte Bereiche bzw. Zeichen können nur mit Zeichen gelöscht werden die das Filter zulässt mit Ausnahme der obligaten Steuerzeichen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# Verfasser : wuf
# Skriptname: entry_num_filter_05.py
# Datum     : 30.09.2008

# Funktion  : Eingabe mit Filter

import Tkinter as tk
from string import digits

ENTRY_FILTER = list(digits + ".")

class MyEntry(object, tk.Entry):

    def __init__(self, parent):

        self.parent = parent
        self.entry_value = tk.StringVar()

        tk.Entry.__init__(self, self.parent, width=20, bg='white', bd=1,
            validate='key', vcmd=self.validate_entry, highlightthickness=0,
            textvar=self.entry_value, exportselection=False)
        self.pack(side='top')

        self.bind('<Return>', self.entry_return)

    def entry_return(self, event=None):

        print "Entry-Value", self.entry_value.get()

    def validate_entry(self):

        index = self.index('insert')
        value = self.entry_value.get()
        arg = index, value

        self.after_idle(self.test, arg)

        return True

    def test(self, arg):

        self.flag = False
        val_index, val_value = arg

        index = self.index('insert')
        value = self.entry_value.get()

        for char in value:
            if char in ENTRY_FILTER:
                continue
            else:
                print 'Hallo', ord(char)
                self.flag = True
                self.entry_value.set(val_value)
                self.icursor(val_index)

        return

root = tk.Tk()
root.geometry('200x100')

my_entry = MyEntry(root)
my_entry.pack_configure(pady=10)

my_entry.focus_set()

root.mainloop()
Gruss wuf (the Voodoo-Programmer) :wink: