Как реализовать поле калькулятора на python для ввода только числовых значений?

Функция прекрасно работает, пока не вводишь вторую точку. Далее ограничение на символы снимается и можно печатать любую ерунду. 1.) Как ограничить число вводимых точек до одной? 2.) Как разрешить ввод точки с кнопки на экране? С клавиатуры вводится нормально, а на экране - нет.

def Проверка(число):
    поиск=re.match('^(?:-[\d.]{1,4}|[\d.]{1,5})$', число)
    try:
        float(число)
        return поиск is not None
    except:
        return поиск is None

Ответы (1 шт):

Автор решения: Oopss
def check_str(s):
    if len(s)>10:
        return 'Слишком длинное'
    s = s.replace(',', '.')
    if s.count('.')>1:
        return 'Не верный формат'
    p = s.replace('.', '')
    if not p.isnumeric():
        return 'Только цифры'
    return float(s)

t=['234.234', '.456', '857.', '456.78.56', '0,01', 'abc.22']

for i in t:
    print(i,check_str(i))

234.234           234.234
.456              0.456
857.              857.0
456.78.56         Не верный формат
0,01              0.01
abc.22            Только цифры
→ Ссылка