В поле ввода Entry необходимо ограничить ввод символов, кроме всех цифр и точек
Друзья, знаю что такой вопрос уже был с определенным ответом, но в том ответе можно вводить только одну точку, а я нуждаюсь в вводе большего количества, как минимум 3 точек. И вопрос может и глупый, но я не могу понять, что нужно изменить в коде, что бы можно было вводить также только цыфры, но с большим количеством точек. Буду очень признателен за ответ(:
вот код :
import tkinter as tk
window = tk.Tk()
window.title("Okno")
def validate(new_value):
try:
if new_value == "" or new_value == "-" or new_value == "+":
return True
_str = str(float(new_value))
return True
except:
return False
que = tk.Label(window, text="Введите цифры")
vcmd = (window.register(validate), '%P')
ans = tk.Entry(window, validate='key', validatecommand=vcmd)
que.grid(row=0, column=0, sticky="e")
ans.grid(row=0, column=1)
ans.focus()
window.mainloop()
Ответы (1 шт):
Если допустимы только цифры и точки, то меняете функцию валидации таким образом:
import string
def validate(new_value):
return all(c in string.digits or c == '.' for c in new_value)
Эта функция проверяет, что все символы в строке соответствуют условию
c in string.digits or c == '.' (т.е. символ или цифра (digit), или точка).
Пустая строка тоже пройдет через это условие. Если пустые строки недопустимы, то нужно добавить дополнительную проверку:
def validate(new_value):
return new_value and all(c in string.digits or c == '.' for c in new_value)