передать введенные значения в поле tkinter из одной функции в другую
Есть задача, где нужно с помощью tkinter считать периметры фигур. То есть создается окно с выбором 3 фигур, ты выбираешь создается еще окно, и в нем вводишь его стороны и тебе выдает периметр. Я новичок в данном деле так сказать, долго пытался ничего не получалось, не понимаю как исправить это, то как выглядит код, понимаю что можно было всяко легче как-то, но я попытался так, помогите с объяснением желательно.
Вот код:
from tkinter import *
from tkinter import messagebox
def calculate_per():
n = int(kv.one.get())
m = int(kv.two.get())
per = (n+m)*2
messagebox.showinfo('Результат', f'Периметр квадрата= {per}')
def kv():
window=Toplevel()
window.title("Считаем периметр квадрата")
window.geometry('500x200')
frame = Frame(window,padx = 10,pady = 10)
frame.pack(expand=True)
stor_one_lb = Label(frame,text="Введите первую сторону (в см) ")
stor_one_lb.grid(row=3, column=1)
one = Entry(frame,)
one.grid(row=3, column=2)
stor_two_lb = Label(frame,text="Введите вторую сторону (в см) ",)
stor_two_lb.grid(row=4, column=1)
two = Entry(frame,)
two.grid(row=4, column=2, pady=5)
cal_btn = Button(frame, text='Рассчитать периметр',command=calculate_per)
cal_btn.grid(row=5, column=2)
return [one, two]
window.mainloop()
def calculate_per1():
n = int(rte.get())
m = int(dre.get())
per = (n+m)*2
messagebox.showinfo('Результат', f'Периметр прямоугольника= {per}')
def pr():
window=Toplevel()
window.title("Считаем периметр квадрата")
window.geometry('500x200')
frame=Frame(window,padx = 10,pady = 10)
frame.pack(expand=True)
rte=Label(frame,text="Введите первую сторону (в см) ")
rte.grid(row=3, column=1)
rte1=Entry(frame,)
rte1.grid(row=3, column=2)
dre=Label(frame,text="Введите вторую сторону (в см) ",)
dre.grid(row=4, column=1)
dre1=Entry(frame,)
dre1.grid(row=4, column=2, pady=5)
cal_btn=Button(frame, text='Рассчитать периметр',command=calculate_per1)
cal_btn.grid(row=5, column=2)
window.mainloop()
def calculate_per2():
n = int(stor_one_lb.get())
m = int(stor_two_lb.get())
p = int(stor_thre_lb.get())
per = n+m+p
messagebox.showinfo('Результат', f'Периметр треугольник= {per}')
def tr():
window=Toplevel()
window.title("Считаем периметр квадрата")
window.geometry('500x200')
frame = Frame(window,padx = 10,pady = 10)
frame.pack(expand=True)
stor_one_lb = Label(frame,text="Введите первую сторону (в см) ")
stor_one_lb.grid(row=3, column=1)
stor_one_tf = Entry(frame,)
stor_one_tf.grid(row=3, column=2)
stor_two_lb = Label(frame,text="Введите вторую сторону (в см) ",)
stor_two_lb.grid(row=4, column=1)
stor_two_tf = Entry(frame,)
stor_two_tf.grid(row=4, column=2, pady=5)
stor_thre_lb = Label(frame,text="Введите третью сторону (в см) ",)
stor_thre_lb.grid(row=5, column=1)
stor_thre_tf = Entry(frame,)
stor_thre_tf.grid(row=5, column=2, pady=6)
cal_btn = Button(frame, text='Рассчитать периметр',command=calculate_per2)
cal_btn.grid(row=6, column=2)
window.mainloop()
window = Tk()
window.title("Считаем периметр фигур")
window.geometry('500x200')
frame = Frame(window,padx = 10,pady = 10)
frame.pack(expand=True)
cal_btn = Button(frame, text='Квадрат',command=kv)
cal_btn.grid(row=5, column=2)
cal_btn = Button(frame, text='Прямоугольник',command=pr)
cal_btn.grid(row=10, column=2)
cal_btn = Button(frame, text='Треугольник',command=tr)
cal_btn.grid(row=15, column=2)
window.mainloop()
Источник: Stack Overflow на русском