Как очистить фрейм, Python tkinter?
В моем проекте требуется заменить одну таблицу другой.
Вместо этого у меня добавляется еще одна таблица ниже с замененными столбцами.
Как в моем коде сделать очистку фрейма от предыдущей таблицы Treeview?
main.py:
class Frame_zakaz(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.place(y=150, x=0, height=605, width=750)
self.configure(background="white")
self.update_table()
def update_table(self):
# определяем столбцы
columns = ("name", "number", "price")
tree = ttk.Treeview(self, columns=columns, show="headings")
tree.pack(fill=tk.BOTH, expand=1)
style = ttk.Style()
style.configure("Treeview", font=('Helvetica', 10))
def up_tb():
MainApp.curs.execute("SELECT Название_блюда, Количество, Цена_блюда FROM Карта_заказа")
result = MainApp.curs.fetchall()
for row in result:
tree.insert('', tk.END, values=row)
return up_tb()
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Если я вас правильно понял, то попробуйте так:
from random import shuffle, sample
import tkinter as tk
import tkinter.ttk as ttk
class FrameZakaz(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.parent = parent
self.place(y=150, x=0, height=605, width=750)
self.configure(background="white")
self.update_table()
def update_table(self):
# определяем столбцы
columns = ("name", "number", "price")
tree = ttk.Treeview(self.parent, columns=columns, selectmode="extended")
tree.pack(fill=tk.BOTH, expand=1)
tree.heading("#0", text="#")
tree.column("#0", minwidth=0, width=20, stretch=tk.NO)
tree.heading("name", text="Название")
tree.column("name", minwidth=0, width=200, stretch=tk.NO)
tree.heading("number", text="Количество")
tree.column("number", minwidth=0, width=100)
tree.heading("price", text="Цена")
tree.column("price", minwidth=0, width=300)
style = ttk.Style()
style.configure("Treeview", font=('Helvetica', 12))
def up_tb():
#? MainApp.curs.execute("SELECT Название_блюда, Количество, Цена_блюда FROM Карта_заказа")
#? result = MainApp.curs.fetchall()
result = [
('A.C', '1', '3750'),
('A.A', '2', '1234'),
('A.B', '3', '3311')
]
result = sample(result, len(result))
tree.delete(*tree.get_children()) # <----
for row in result:
tree.insert('', tk.END, values=row)
self.parent.after(2000, up_tb) # <----
#? return up_tb()
self.parent.after(1000, up_tb) # <----
master = tk.Tk()
master.geometry('600x400')
gui = FrameZakaz(master)
master.mainloop()

