[+] clean
[>] _create_table > create_table
This commit is contained in:
parent
9055de6102
commit
bd26ece77a
@ -8,22 +8,23 @@ class CTkTableFrame(ctk.CTkFrame):
|
||||
self._callback = callback
|
||||
|
||||
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):
|
||||
event.call("loading.open")
|
||||
event.call("loading.set_progress", 0)
|
||||
event.call("loading.set_text", "Таблица")
|
||||
|
||||
event.call("loading.set_subtext", "очистка")
|
||||
"""Создает таблицу с заголовками и данными, используя параметры из словаря."""
|
||||
def clean(self):
|
||||
_old_children = self.winfo_children()
|
||||
for i, widget in enumerate(_old_children):
|
||||
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)
|
||||
event.call("loading.set_progress", 0)
|
||||
event.call("loading.set_subtext", "настройка")
|
||||
|
||||
_need_to_pack = []
|
||||
|
||||
# Применяем шаблон значений по умолчанию
|
||||
@ -48,7 +49,6 @@ class CTkTableFrame(ctk.CTkFrame):
|
||||
col["width"] = max_data_width
|
||||
col["align"] = parse_align(col["align"])
|
||||
|
||||
event.call("loading.set_progress", 1)
|
||||
# Заголовки
|
||||
header_frame = ctk.CTkFrame(scroll_frame, fg_color="gray30")
|
||||
_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}))
|
||||
|
||||
event.call("loading.set_progress", 0)
|
||||
event.call("loading.set_subtext", "подготовка данных")
|
||||
loading.configure(text="Подготовка данных...")
|
||||
# Данные
|
||||
for row_index, row_data in enumerate(self.data):
|
||||
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:
|
||||
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:
|
||||
event.call("loading.set_progress", (row_index + 1) / len(self.data))
|
||||
|
||||
event.call("loading.set_progress", 0)
|
||||
event.call("loading.set_subtext", "отрисовка данных")
|
||||
loading.configure(text="Отрисовка данных...")
|
||||
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)
|
||||
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):
|
||||
"""Редактирует строку по индексу."""
|
||||
@ -99,4 +92,5 @@ class CTkTableFrame(ctk.CTkFrame):
|
||||
|
||||
def redraw(self):
|
||||
"""Перерисовывает таблицу."""
|
||||
self._create_table()
|
||||
self.clean()
|
||||
self.create_table()
|
||||
|
Loading…
x
Reference in New Issue
Block a user