Попытайтесь получить значение, когда вызывается функция submit
вместо первого рисования экрана, это работает для меня.
Также вы рассматриваете переменную как int
, это прерывается, если пользователь удаляет значение из поля и нажимает submit
. Более безопасный способ - использовать StringVar
и проверить правильность ввода, а затем преобразовать его в тип int
. Как правило, все вводимые пользователем данные должны быть проверены, поскольку они считаются опасными.
Пример:
import tkinter as tk
from tkinter import messagebox as m_box
win = tk.Tk()
entry_var = tk.StringVar()
entry = tk.Entry(win, text='Enter the number', textvariable=entry_var)
entry.grid(row=0, column=0)
def submit():
entry_var_get = entry_var.get()
if entry_var_get.isdigit():
entry_var_get = int(entry_var_get)
if not entry_var_get or entry_var_get == 0:
m_box.showerror('error', 'empty value')
else:
m_box.showinfo('success', f'value entered: {entry_var_get}')
submit_btn = tk.Button(win, text='submit', command=submit)
submit_btn.grid(row=1, column=0)
win.mainloop()