Tkinter - запрашивает у пользователя целочисленный ввод, пока он не даст правильный ответ в поле ввода tkinter - PullRequest
0 голосов
/ 02 мая 2020

Я пишу программу, которая принимает личную информацию пользователей, такую ​​как имя, возраст, состояние и т. Д. c

myfont = f.Font(family='Maiandra GD')
agel = Label(root, text="Age    :", font=myfont, bg="#C5B358",  bd=4, relief="raised").place(relx=0.4, rely=0.62, relwidth=0.08, anchor='n')
ageE = Entry(root, font=myfont, bd=2, relief="sunken").place(relx=0.54, rely=0.62, width=265, anchor='n')


button = Button(root, text="START", font=myfont, borderwidth=10, bg="#C5B358", command=start).place(relx=0.5, rely=0.735, relwidth=0.235, anchor='n')

Но вместо того, чтобы принимать строковый ввод для возраста, я хочу, чтобы программа высветила окно сообщения об ошибке запрашивать ввод только целых чисел

Это то, что я пробовал до сих пор, и он не работает

def start():
    print("START")


def popup():
    messagebox.showerror("Invalid input !!", "Insert only integers in age entry!")



v = StringVar()
agel = Label(root, text="Age    :", font=myfont, bg="#C5B358",  bd=4, relief="raised").place(relx=0.4, rely=0.62, relwidth=0.08, anchor='n')
ageE = Entry(root, font=myfont, bd=2, relief="sunken", textvariable=v).place(relx=0.54, rely=0.62, width=265, anchor='n')
s=v.get()


if s.isnumeric():
    button = Button(root, text="START", font=myfont, borderwidth=10, bg="#C5B358", command=start).place(relx=0.5, rely=0.735, relwidth=0.235, anchor='n')
else:
    button = Button(root, text="START", font=myfont, borderwidth=10, bg="#C5B358", command=popup).place(relx=0.5, rely=0.735, relwidth=0.235, anchor='n')

1 Ответ

0 голосов
/ 02 мая 2020

Если вы попытаетесь преобразовать строку, которая не может быть преобразована в целое число, интерпретатор выдаст ошибку значения.

try:
    input_age = int(ageE.get())
except ValueError:
    messagebox.showerror('"Invalid input !!", "Insert only integers in age entry!"')
...