проблемы с ttk.Notebook
я сделал программу в которой есть много вкладок
но когда в одной из них я нажимаю галочку
то в другой вкладке она тоже нажимаеться,
создавал все вот так:
tab_control = ttk.Notebook(root)
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab3 = ttk.Frame(tab_control)
tab4 = ttk.Frame(tab_control)
tab5 = ttk.Frame(tab_control)
tab_control.add(tab1, text='TEST1')
tab_control.add(tab2, text='TEST2')
tab_control.add(tab3, text='TEST3')
tab_control.add(tab4, text='TEST4')
tab_control.add(tab5, text='TEST5')
root.cb = Checkbutton(tab1, text="Enable",command=TEST1COM)
root.cb.grid(column = 1, row = 1)
root.cb = Checkbutton(tab2, text="Enable",command=TEST2COM)
root.cb.grid(column = 1, row = 1)
root.cb = Checkbutton(tab3, text="Enable",command=TEST3COM)
root.cb.grid(column = 1, row = 1)
root.cb = Checkbutton(tab4, text="Enable",command=TEST4COM)
root.cb.grid(column = 1, row = 1)
root.cb = Checkbutton(tab5, text="Enable",command=TEST5COM)
root.cb.grid(column = 1, row = 1)
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Привяжите к каждому чекбоксу отдельную переменную BooleanVar или IntVar (потом из этой же переменной можно брать состояние нужного чекбокса через cb1_var.get()):
cb1_var = BooleanVar()
cb1 = Checkbutton(tab1, text="Enable", variable=cb1_var)
cb1.grid(column = 1, row = 1)
cb2_var = BooleanVar()
cb2 = Checkbutton(tab2, text="Enable", variable=cb2_var)
cb2.grid(column = 1, row = 1)
cb3_var = BooleanVar()
cb3 = Checkbutton(tab3, text="Enable", variable=cb3_var)
cb3.grid(column = 1, row = 1)
cb4_var = BooleanVar()
cb4 = Checkbutton(tab4, text="Enable", variable=cb4_var)
cb4.grid(column = 1, row = 1)
cb5_var = BooleanVar()
cb5 = Checkbutton(tab5, text="Enable", variable=cb5_var)
cb5.grid(column = 1, row = 1)
По поводу root.cb = ...: вы по сути добавляете атрибут в чужой объект, так лучше не делать. Может так случиться, то у этого объекта был атрибут с таким именем, и вы сломаете работу объекта. Также лучше не использовать одно и то же имя для разных объектов (если конечно вы собираетесь использовать объекты, которые перезатираете).