[+] clean

[>] _create_table > create_table
This commit is contained in:
Maxim Khomutov 2025-03-21 20:44:31 +03:00
parent 9055de6102
commit bd26ece77a

View File

@ -8,22 +8,23 @@ class CTkTableFrame(ctk.CTkFrame):
self._callback = callback self._callback = callback
self.configure(width=width, height=height) self.configure(width=width, height=height)
self.loading_frame = ctk.CTkFrame(self)
self.loading_frame.pack(fill="both", expand=True)
self.clean()
def _create_table(self): def clean(self):
event.call("loading.open")
event.call("loading.set_progress", 0)
event.call("loading.set_text", "Таблица")
event.call("loading.set_subtext", "очистка")
"""Создает таблицу с заголовками и данными, используя параметры из словаря."""
_old_children = self.winfo_children() _old_children = self.winfo_children()
for i, widget in enumerate(_old_children): for i, widget in enumerate(_old_children):
widget.destroy() widget.destroy()
event.call("loading.set_progress", (i + 1) / len(_old_children)) self.loading_frame = ctk.CTkFrame(self)
self.loading_frame.pack(fill="both", expand=True)
def create_table(self):
"""Создает таблицу с заголовками и данными, используя параметры из словаря."""
loading = ctk.CTkLabel(self.loading_frame, text="Загрузка...", font=("Arial", 12))
loading.pack(fill="both", expand=True)
scroll_frame = ctk.CTkScrollableFrame(self) scroll_frame = ctk.CTkScrollableFrame(self)
event.call("loading.set_progress", 0)
event.call("loading.set_subtext", "настройка")
_need_to_pack = [] _need_to_pack = []
# Применяем шаблон значений по умолчанию # Применяем шаблон значений по умолчанию
@ -48,7 +49,6 @@ class CTkTableFrame(ctk.CTkFrame):
col["width"] = max_data_width col["width"] = max_data_width
col["align"] = parse_align(col["align"]) col["align"] = parse_align(col["align"])
event.call("loading.set_progress", 1)
# Заголовки # Заголовки
header_frame = ctk.CTkFrame(scroll_frame, fg_color="gray30") header_frame = ctk.CTkFrame(scroll_frame, fg_color="gray30")
_need_to_pack.append((header_frame, {"fill": "x", "padx": 2, "pady": 1})) _need_to_pack.append((header_frame, {"fill": "x", "padx": 2, "pady": 1}))
@ -59,8 +59,7 @@ class CTkTableFrame(ctk.CTkFrame):
) )
_need_to_pack.append((header_label, {"side": "left", "padx": 2, "pady": 3})) _need_to_pack.append((header_label, {"side": "left", "padx": 2, "pady": 3}))
event.call("loading.set_progress", 0) loading.configure(text="Подготовка данных...")
event.call("loading.set_subtext", "подготовка данных")
# Данные # Данные
for row_index, row_data in enumerate(self.data): for row_index, row_data in enumerate(self.data):
row_frame = ctk.CTkFrame(scroll_frame, fg_color="gray20", corner_radius=3, height=20) row_frame = ctk.CTkFrame(scroll_frame, fg_color="gray20", corner_radius=3, height=20)
@ -74,17 +73,11 @@ class CTkTableFrame(ctk.CTkFrame):
if self._callback: if self._callback:
cell_label.bind("<Double-1>", lambda event, idx=row_index, r=row_data: self._callback({"row_index": idx, "row_data": r})) cell_label.bind("<Double-1>", lambda event, idx=row_index, r=row_data: self._callback({"row_index": idx, "row_data": r}))
if row_index % 2 == 0: loading.configure(text="Отрисовка данных...")
event.call("loading.set_progress", (row_index + 1) / len(self.data))
event.call("loading.set_progress", 0)
event.call("loading.set_subtext", "отрисовка данных")
for i, (widget, pack_params) in enumerate(_need_to_pack): for i, (widget, pack_params) in enumerate(_need_to_pack):
if i % 2 == 0:
event.call("loading.set_progress", (i + 1) / len(_need_to_pack))
widget.pack(**pack_params) widget.pack(**pack_params)
scroll_frame.pack(fill="both", expand=True, padx=5, pady=5) scroll_frame.pack(fill="both", expand=True, padx=5, pady=5)
event.call("loading.close") self.loading_frame.destroy()
def edit(self, row_index, new_data): def edit(self, row_index, new_data):
"""Редактирует строку по индексу.""" """Редактирует строку по индексу."""
@ -99,4 +92,5 @@ class CTkTableFrame(ctk.CTkFrame):
def redraw(self): def redraw(self):
"""Перерисовывает таблицу.""" """Перерисовывает таблицу."""
self._create_table() self.clean()
self.create_table()