Здраствутйе, прошу помощи. Есть первое окно и второе окно. В первом окне есть Combobox, есть 4 массива со списками. В другом окне есть 4 Radiobutton. Как отловить какой пункт был нажат во втором окне, чтобы в первом окне создать условие, какие должны списки загружаться в Combobox. Вот код:
def create_window_triangle():
def func_label_configure():
if lb_formulas.current() == 0:
l_field_1.config(text="Довжина сторони (у см)")
l_field_2.config(text="Довжина висоти (у см)")
elif lb_formulas.current() == 1:
l_field_1.config(text="Довжина першої сторони (у см)")
l_field_2.config(text="Довжина другої сторони (у см)")
l_field_3.config(text="Довжина третьої сторони (у см)")
elif lb_formulas.current() == 2:
l_field_1.config(text="Довжина першої сторони (у см)")
l_field_2.config(text="Довжина другої сторони (у см)")
l_field_3.config(text="Кут (у градусах)")
elif lb_formulas.current() == 3:
l_field_1.config(text="Довжина першої сторони (у см)")
l_field_2.config(text="Довжина другої сторони (у см)")
l_field_3.config(text="Довжина третьої сторони (у см)")
l_field_4.config(text="Радіус ОПИСАНОГО кола (у градусах)")
elif lb_formulas.current() == 4:
l_field_1.config(text="Довжина першої сторони (у см)")
l_field_2.config(text="Довжина другої сторони (у см)")
l_field_3.config(text="Довжина третьої сторони (у см)")
l_field_4.config(text="Радіус ВПИСАНОГО кола (у градусах)")
else:
l_field_1.config(text="")
l_field_2.config(text="")
l_field_3.config(text="")
l_field_4.config(text="")
def lb_formulas_selected():
if lb_formulas.current() == 0:
l_title.config(text="Обрана формула \"{}\"".format(lb_formulas.get()))
func_hide_sumbit()
func_show_frm_1()
func_show_frm_2()
func_hide_frm_3()
func_hide_frm_4()
func_show_sumbit()
func_show_clear()
func_label_configure()
elif lb_formulas.current() == 1:
l_title.config(text="Обрана формула \"{}\"".format(lb_formulas.get()))
func_hide_sumbit()
func_show_frm_1()
func_show_frm_2()
func_show_frm_3()
func_hide_frm_4()
func_show_sumbit()
func_show_clear()
elif lb_formulas.current() == 2:
l_title.config(text="Обрана формула \"{}\"".format(lb_formulas.get()))
func_hide_sumbit()
func_show_frm_1()
func_show_frm_2()
func_show_frm_3()
func_hide_frm_4()
func_show_sumbit()
elif lb_formulas.current() == 3:
l_title.config(text="Обрана формула \"{}\"".format(lb_formulas.get()))
func_hide_sumbit()
func_show_frm_1()
func_show_frm_2()
func_show_frm_3()
func_show_frm_4()
func_show_sumbit()
func_show_clear()
elif lb_formulas.current() == 4:
l_title.config(text="Обрана формула \"{}\"".format(lb_formulas.get()))
func_hide_sumbit()
func_show_frm_1()
func_show_frm_2()
func_show_frm_3()
func_show_frm_4()
func_show_sumbit()
func_show_clear()
else:
l_title.config(text="Спочатку оберіть формулу")
func_label_configure()
def func_clear():
e_field_1.delete("0", tk.END)
e_field_2.delete("0", tk.END)
e_field_3.delete("0", tk.END)
e_field_4.delete("0", tk.END)
mb.showinfo("Очищення полів", "Поля очищенні успішно")
def func_triangle_toplevel():
def func_return_main():
window_toplevel.destroy()
window.deiconify()
return wt_rb_state
window.withdraw()
window_toplevel = tk.Toplevel()
window_toplevel.focus_force()
wintl_width = window_toplevel.winfo_screenwidth()
wintl_height = window_toplevel.winfo_screenheight()
wintl_width = wintl_width // 2
wintl_height = wintl_height // 2
wintl_width = wintl_width - 150
wintl_height = wintl_height - 200
wt_rb_state = tk.IntVar()
wt_rb_state.set(0)
window_toplevel['bg'] = '#ffffff'
window_toplevel.title("Тип трикутника")
window_toplevel.geometry("300x400+{}+{}".format(wintl_width, wintl_height))
window_toplevel.resizable(False, False)
wt_l_title = tk.Label(window_toplevel, bg="#ffffff", font=14, text="Оберіть тип трикутника")
wt_l_title.pack(pady=8)
wt_rb_one = tk.Radiobutton(window_toplevel, anchor=tk.W, bg="#ffffff", text="Звичайний прямокутник", variable=wt_rb_state, value=0, width=35)
wt_rb_one.pack(pady=8)
wt_rb_two = tk.Radiobutton(window_toplevel, anchor=tk.W, bg="#ffffff", text="Прямокутний прямокутник", variable=wt_rb_state, value=1, width=35)
wt_rb_two.pack(pady=8)
wt_rb_three = tk.Radiobutton(window_toplevel, anchor=tk.W, bg="#ffffff", text="Рівнобедрений прямокутник", variable=wt_rb_state, value=2, width=35)
wt_rb_three.pack(pady=8)
wt_rb_four = tk.Radiobutton(window_toplevel, anchor=tk.W, bg="#ffffff", text="Рівносторонній прямокутник", variable=wt_rb_state, value=3, width=35)
wt_rb_four.pack(pady=8)
wt_btn_return = tk.Button(window_toplevel, text="ОК", command=func_return_main, width=10)
wt_btn_return.place(x=212, y=365)
window_toplevel.mainloop()
def func_loading_formulas():
global wt_rb_state
if wt_rb_state == 0:
lb_formulas.config(values=lb_formulas_type_1)
elif wt_rb_state == 1:
lb_formulas.config(values=lb_formulas_type_2)
elif wt_rb_state == 2:
lb_formulas.config(values=lb_formulas_type_3)
elif wt_rb_state == 3:
lb_formulas.config(values=lb_formulas_type_4)
else:
lb_formulas.config(values=lb_formulas_type_1)
def func_hide_frm_1():
frm_1.pack_forget()
def func_show_frm_1():
frm_1.pack()
def func_hide_frm_2():
frm_2.pack_forget()
def func_show_frm_2():
frm_2.pack()
def func_hide_frm_3():
frm_3.pack_forget()
def func_show_frm_3():
frm_3.pack()
def func_hide_frm_4():
frm_4.pack_forget()
def func_show_frm_4():
frm_4.pack()
def func_hide_answer():
l_answer.pack_forget()
def func_show_answer():
l_answer.pack()
def func_hide_sumbit():
btn_sumbit.pack_forget()
def func_show_sumbit():
btn_sumbit.pack()
def func_hide_clear():
btn_clear.place_forget()
def func_show_clear():
btn_clear.place(x=10, y=595)
def func_window_main_return():
window.destroy()
create_window_main()
def func_close_triangle_app():
dialog_quit = mb.askyesno(title="Вихід", message="Вийти з програми?")
if dialog_quit:
window.destroy()
window = tk.Tk()
win_width = window.winfo_screenwidth()
win_height = window.winfo_screenheight()
win_width = win_width // 2
win_height = win_height // 2
win_width = win_width - 300 # Половина ширини вікна
win_height = win_height - 350 # Половина висоти вікна
window['bg'] = '#fafafa'
window.title("Площа трикутника")
window.geometry("600x640+{}+{}".format(win_width, win_height))
window.resizable(False, False)
lb_formulas_type_1 = ["За стороною і висотою",
"За трьома сторонами",
"За двома сторонами і кутом між ними",
"За трьома сторонами і радіусом ОПИСАНОГО кола",
"За трьома сторонами і радіусом ВПИСАНОГО кола"]
lb_formulas_type_2 = ["Формула площі прямокутного трикутника"]
lb_formulas_type_3 = ["За основою та бічною стороною",
"За двома бічними сторонами та кутом між ними",
"За основою, бічною стороною та кутом при вершині"]
lb_formulas_type_4 = ["Через сторону та висоту", "Через сторону"]
l_title = tk.Label(window, bg="#fafafa", font=24, text="Оберіть формулу", pady=15, anchor=tk.CENTER)
l_title.pack()
lb_formulas = ttk.Combobox(window, width=90, state="readonly")
lb_formulas.pack(pady=4)
func_loading_formulas()
btn_sumbit_formula = tk.Button(window, text="Обрати", pady=3, width=79, command=lb_formulas_selected)
btn_sumbit_formula.pack(pady=16)
frm_1 = tk.Frame(window, bg="#fafafa", pady=16)
frm_1.pack()
l_field_1 = tk.Label(master=frm_1, bg="#fafafa", text="Мітка 1", pady=2, width=80, anchor=tk.W)
l_field_1.pack()
e_field_1 = tk.Entry(master=frm_1, borderwidth=2, width=92, relief=tk.SUNKEN)
e_field_1.pack()
frm_2 = tk.Frame(window, bg="#fafafa", pady=16)
frm_2.pack()
l_field_2 = tk.Label(master=frm_2, bg="#fafafa", text="Мітка 2", pady=2, width=80, anchor=tk.W)
l_field_2.pack()
e_field_2 = tk.Entry(master=frm_2, borderwidth=2, width=92, relief=tk.SUNKEN)
e_field_2.pack()
frm_3 = tk.Frame(window, bg="#fafafa", pady=16)
frm_3.pack()
l_field_3 = tk.Label(master=frm_3, bg="#fafafa", text="Мітка 3", pady=2, width=80, anchor=tk.W)
l_field_3.pack()
e_field_3 = tk.Entry(master=frm_3, borderwidth=2, width=92, relief=tk.SUNKEN)
e_field_3.pack()
frm_4 = tk.Frame(window, bg="#fafafa", pady=16)
frm_4.pack()
l_field_4 = tk.Label(master=frm_4, bg="#fafafa", text="Мітка 4", pady=2, width=80, anchor=tk.W)
l_field_4.pack()
e_field_4 = tk.Entry(master=frm_4, borderwidth=2, width=92, relief=tk.SUNKEN)
e_field_4.pack()
btn_sumbit = tk.Button(window, bg="#dbffcc", text="Обчислити", width=78, pady=3)
btn_sumbit.pack(pady=30)
l_answer = tk.Label(window, bg="#fafafa", text="Відповідь")
l_answer.pack()
btn_clear = tk.Button(window, text="Очистити поля", command=func_clear, pady=4)
btn_clear.place(x=10, y=595)
btn_type = tk.Button(window, text="Тип трикутника", pady=4, command=func_triangle_toplevel)
btn_type.place(x=395, y=595)
btn_return = tk.Button(window, text="Повернутися", command=func_window_main_return, pady=4)
btn_return.place(x=505, y=595)
func_hide_frm_1()
func_hide_frm_2()
func_hide_frm_3()
func_hide_frm_4()
func_hide_answer()
func_hide_sumbit()
func_hide_clear()
window.protocol("WM_DELETE_WINDOW", func_close_triangle_app)
window.mainloop()