Я скинул много кода(он не полный), но в местах, где следует обратить внимание выделено жирным.
Прошу помогите , подскажите как решить проблему.
У меня при нажати на кнопку "таблица 2", switcher_present = 1 меняется функцией switch_changer_to_2 на значение 2.
Я хочу чтобы все кнопки, все таблицы, для которых я сделал условия, зависящие от switch_present, отрисовались заново.
Русскими словами: при нажатии кнопки таблица 2(таблица 3 , 4, 1) у меня отобразилась вторая(третья, четвертая, первая) таблица и все кнопки, функционал которых будет относиться к своим таблицам.
import tkinter as tk
from tkinter import ttk
import pymysql
from config import host, user, password, db_name
class Main(tk.Frame):
switch_present = 1
def switch_changer_to_1(self):
self.switch_present = 1
print(self.switch_present)
return self.switch_present
def switch_changer_to_2(self):
self.switch_present = 2
print(self.switch_present)
return self.switch_present
def switch_changer_to_3(self):
self.switch_present = 3
print(self.switch_present)
return self.switch_present
def switch_changer_to_4(self):
self.switch_present = 4
print(self.switch_present)
return self.switch_present
def __init__(self, root):
super().__init__(root)
self.init_main()
self.db = db
self.view_records()
def init_main(self):
toolbar = tk.Frame(bg='#d7d8e0', bd=2)
toolbar.pack(side=tk.TOP, fill=tk.X)
self.add_img = tk.PhotoImage(file="add.gif")
if(self.switch_present == 1):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
elif(self.switch_present == 2):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
elif (self.switch_present == 3):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
elif (self.switch_present == 4):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
btn_open_dialog.pack(side=tk.LEFT)
# переключение кнопки изменения
#эти самые кнопки
# переключатель таблиц
switcher = tk.Frame(bg='#d7d8e0', bd=2)
switcher.pack(side=tk.TOP, fill=tk.X)
btn_switch_table_1 = tk.Button(switcher, text='таблица 1', command=self.switch_changer_to_1, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_1.pack(side=tk.LEFT)
btn_switch_table_2 = tk.Button(switcher, text='таблица 2', command=self.switch_changer_to_2, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_2.pack(side=tk.LEFT)
btn_switch_table_3 = tk.Button(switcher, text='таблица 3', command=self.switch_changer_to_3, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_3.pack(side=tk.LEFT)
btn_switch_table_4 = tk.Button(switcher, text='таблица 4', command=self.switch_changer_to_4, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_4.pack(side=tk.LEFT)
# переключатель деревьев
if (self.switch_present == 1):
self.tree = ttk.Treeview(self, columns=('ID', 'description', 'costs', 'total'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('description', width=365, anchor=tk.CENTER)
self.tree.column('costs', width=150, anchor=tk.CENTER)
self.tree.column('total', width=100, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('description', text='Наименование')
self.tree.heading('costs', text='Статья дохода|расхода')
self.tree.heading('total', text='Сумма')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
elif(self.switch_present == 2):
self.tree = ttk.Treeview(self, columns=('ID', 'nick_name', 'surename', 'name'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('nick_name', width=365, anchor=tk.CENTER)
self.tree.column('surename', width=150, anchor=tk.CENTER)
self.tree.column('name', width=150, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('nick_name', text='Никнейм')
self.tree.heading('surename', text='Фамилия')
self.tree.heading('name', text='Имя')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
elif (self.switch_present == 3):
self.tree = ttk.Treeview(self, columns=('ID', 'login', 'password'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('login', width=300, anchor=tk.CENTER)
self.tree.column('password', width=315, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('login', text='Логин')
self.tree.heading('password', text='Пароль')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
if (self.switch_present == 4):
self.tree = ttk.Treeview(self, columns=('ID', 'address', 'square', 'tel'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('address', width=315, anchor=tk.CENTER)
self.tree.column('square', width=100, anchor=tk.CENTER)
self.tree.column('tel', width=200, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('address', text='Адрес')
self.tree.heading('square', text='Площадь склада')
self.tree.heading('tel', text='Телефон склада')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
if __name__ == "__main__":
root = tk.Tk()
db = DB()
app = Main(root)
app.pack()
root.title("Домашние финансы")
root.geometry("665x500+300+200")
root.resizable(False, False)
root.mainloop()
Прошу помогите , подскажите как решить проблему.
У меня при нажати на кнопку "таблица 2", switcher_present = 1 меняется функцией switch_changer_to_2 на значение 2.
Я хочу чтобы все кнопки, все таблицы, для которых я сделал условия, зависящие от switch_present, отрисовались заново.
Русскими словами: при нажатии кнопки таблица 2(таблица 3 , 4, 1) у меня отобразилась вторая(третья, четвертая, первая) таблица и все кнопки, функционал которых будет относиться к своим таблицам.
import tkinter as tk
from tkinter import ttk
import pymysql
from config import host, user, password, db_name
class Main(tk.Frame):
switch_present = 1
def switch_changer_to_1(self):
self.switch_present = 1
print(self.switch_present)
return self.switch_present
def switch_changer_to_2(self):
self.switch_present = 2
print(self.switch_present)
return self.switch_present
def switch_changer_to_3(self):
self.switch_present = 3
print(self.switch_present)
return self.switch_present
def switch_changer_to_4(self):
self.switch_present = 4
print(self.switch_present)
return self.switch_present
def __init__(self, root):
super().__init__(root)
self.init_main()
self.db = db
self.view_records()
def init_main(self):
toolbar = tk.Frame(bg='#d7d8e0', bd=2)
toolbar.pack(side=tk.TOP, fill=tk.X)
self.add_img = tk.PhotoImage(file="add.gif")
if(self.switch_present == 1):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
elif(self.switch_present == 2):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
elif (self.switch_present == 3):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
elif (self.switch_present == 4):
btn_open_dialog = tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
compound=tk.TOP, image=self.add_img)
btn_open_dialog.pack(side=tk.LEFT)
# переключение кнопки изменения
#эти самые кнопки
# переключатель таблиц
switcher = tk.Frame(bg='#d7d8e0', bd=2)
switcher.pack(side=tk.TOP, fill=tk.X)
btn_switch_table_1 = tk.Button(switcher, text='таблица 1', command=self.switch_changer_to_1, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_1.pack(side=tk.LEFT)
btn_switch_table_2 = tk.Button(switcher, text='таблица 2', command=self.switch_changer_to_2, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_2.pack(side=tk.LEFT)
btn_switch_table_3 = tk.Button(switcher, text='таблица 3', command=self.switch_changer_to_3, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_3.pack(side=tk.LEFT)
btn_switch_table_4 = tk.Button(switcher, text='таблица 4', command=self.switch_changer_to_4, bg='#d7d8e0', bd=2, compound=tk.TOP)
btn_switch_table_4.pack(side=tk.LEFT)
# переключатель деревьев
if (self.switch_present == 1):
self.tree = ttk.Treeview(self, columns=('ID', 'description', 'costs', 'total'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('description', width=365, anchor=tk.CENTER)
self.tree.column('costs', width=150, anchor=tk.CENTER)
self.tree.column('total', width=100, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('description', text='Наименование')
self.tree.heading('costs', text='Статья дохода|расхода')
self.tree.heading('total', text='Сумма')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
elif(self.switch_present == 2):
self.tree = ttk.Treeview(self, columns=('ID', 'nick_name', 'surename', 'name'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('nick_name', width=365, anchor=tk.CENTER)
self.tree.column('surename', width=150, anchor=tk.CENTER)
self.tree.column('name', width=150, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('nick_name', text='Никнейм')
self.tree.heading('surename', text='Фамилия')
self.tree.heading('name', text='Имя')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
elif (self.switch_present == 3):
self.tree = ttk.Treeview(self, columns=('ID', 'login', 'password'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('login', width=300, anchor=tk.CENTER)
self.tree.column('password', width=315, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('login', text='Логин')
self.tree.heading('password', text='Пароль')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
if (self.switch_present == 4):
self.tree = ttk.Treeview(self, columns=('ID', 'address', 'square', 'tel'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('address', width=315, anchor=tk.CENTER)
self.tree.column('square', width=100, anchor=tk.CENTER)
self.tree.column('tel', width=200, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('address', text='Адрес')
self.tree.heading('square', text='Площадь склада')
self.tree.heading('tel', text='Телефон склада')
self.tree.pack(side=tk.LEFT)
scroll = tk.Scrollbar(self, command=self.tree.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
self.tree.configure(yscrollcommand=scroll.set)
if __name__ == "__main__":
root = tk.Tk()
db = DB()
app = Main(root)
app.pack()
root.title("Домашние финансы")
root.geometry("665x500+300+200")
root.resizable(False, False)
root.mainloop()