Проблема в том, что вы вызываете e1.get()
примерно за миллисекунду после создания виджета ввода, задолго до того, как у пользователя появится возможность ввода данных.
GUI программирование не похоже на GUI программирование - виджеты не блокируются, пока пользователь не введет что-то, как input
. Вместо этого вам нужно определить кнопку или какой-то другой способ для пользователя выполнить вычисления, когда они будут готовы (пункт меню, связывание клавиатуры и т. Д. c).
Самое простое решение - создать кнопку для выполнения расчетов. Когда вы нажимаете кнопку, функция, связанная с кнопкой, может собирать необходимые данные, вызывать функцию для вычисления результата, а затем обновлять отображение результатов.
Например, начните с определения функции который получит данные и вычислит результат:
def do_calculation():
length = int(e1.get())
breadth = int(e2.get())
result = area(length, breadth)
e3.configure(text=result)
Затем создайте кнопку, которая будет вызывать эту функцию при нажатии:
do_calc_button = Button(frame, command=do_calculation, text="Calculate")
do_calc_button.grid(row=4, column=0)
С этим пользователь может вводить значения, нажмите кнопку и увидите результат.