Как сделать проверку поля ввода в tkinter - PullRequest
1 голос
/ 21 апреля 2019

Мне нужны только цифры и знак "." были напечатаны в моем поле ввода. Но после выполнения этого кода я могу набирать только цифры или только подписывать «.» (Я пытаюсь ввести «2,45», но точка не набирает после «2». Если я пытаюсь ввести «.45», «45» не печатать после «.»). Как я могу решить эту проблему?

from tkinter import *

root = Tk()
entry = Entry(width=10)
entry.pack()

def correct(inp):
    if inp.isdigit():
        return True
    elif inp == ".":
        return True
    elif inp == "":
        return True
    else:
        return False

reg = root.register(correct)

entry.config(validate='key', validatecommand = (reg, '%P'))

root.mainloop()

1 Ответ

0 голосов
/ 21 апреля 2019

Ваша функция проверки написана неправильно ... и я думаю, что это будет более простой способ сделать то, что вы хотите:

import tkinter as tk

root = tk.Tk()
entry = tk.Entry(width=10)
entry.pack()

def correct(inp):
    """ Determine if inp value is a valid floating point number. """
    try:
        float(inp)
    except ValueError:
        return inp == ''  # Consider empty string valid.
    else:
        return True

reg = root.register(correct)

entry.config(validate='key', validatecommand=(reg, '%P'))

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...