Search code examples
validationtkinterfloating-pointintegerwidget

entry widget validation with tkinter for both integers and floating point values


So i have some code which can be used to validate an entry widget so that only integer values can be inputted. I would like to achieve the same effect but instead of only integer values both integer values AND floating point value are excepted.

from tkinter import *
root = Tk()
def testVal(inp,acttyp):
    if acttyp == '1': #insert
        if not inp.isdigit():
            return False
    return True
entry = Entry(root, validate="key")
entry['validatecommand'] = (entry.register(testVal),'%P','%d')
entry.pack()

root.mainloop()

Solution

  • You can simply call float() on the input text to determine whether it is integer or float:

    from tkinter import *
    
    def validate_entry(inp):
        try:
            float(inp)
        except:
            return False
        return True
    
    root = Tk()
    Entry(root, validate='key', vcmd=(root.register(validate_entry), '%P')).pack()
    root.mainloop()