tkonstructor 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ from .card_area import CardArea
@@ -0,0 +1,78 @@
1
+ import tkinter as tk
2
+ from tkinter import ttk
3
+
4
+
5
+ class CardArea(tk.Frame):
6
+ """
7
+ Универсальный контейнер для карточек с поддержкой сетки.
8
+ :param card_width: Общая ширина контейнера (int).
9
+ :param align: Выравнивание контейнера ("center", "left", "right").
10
+ :param columns: Количество карточек в один ряд (int).
11
+ """
12
+
13
+ def __init__(self, parent, card_width=None, align="center", columns=1, **kwargs):
14
+ super().__init__(parent, **kwargs)
15
+
16
+ self.card_width = card_width
17
+ self.align = align
18
+ self.columns = max(1, columns) # Защита от 0 или отрицательных чисел
19
+
20
+ self.canvas = tk.Canvas(self, highlightthickness=0)
21
+ self.scrollbar = ttk.Scrollbar(self, orient="vertical", command=self.canvas.yview)
22
+ self.scrollable_frame = tk.Frame(self.canvas)
23
+
24
+ self.scrollable_frame.bind(
25
+ "<Configure>",
26
+ lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all"))
27
+ )
28
+
29
+ anchor_map = {"left": "nw", "center": "n", "right": "ne"}
30
+ self.anchor = anchor_map.get(self.align, "n")
31
+
32
+ self.canvas_window = self.canvas.create_window(
33
+ (0, 0),
34
+ window=self.scrollable_frame,
35
+ anchor=self.anchor
36
+ )
37
+
38
+ self.canvas.bind("<Configure>", self._on_canvas_configure)
39
+ self.canvas.configure(yscrollcommand=self.scrollbar.set)
40
+ self.canvas.pack(side="left", fill="both", expand=True)
41
+ self.scrollbar.pack(side="right", fill="y")
42
+
43
+ self.canvas.bind_all("<MouseWheel>", self._on_mousewheel)
44
+
45
+ def _on_canvas_configure(self, event):
46
+ if self.card_width:
47
+ self.canvas.itemconfig(self.canvas_window, width=self.card_width)
48
+ if self.align == "center":
49
+ self.canvas.coords(self.canvas_window, event.width / 2, 0)
50
+ elif self.align == "right":
51
+ self.canvas.coords(self.canvas_window, event.width, 0)
52
+ else:
53
+ self.canvas.coords(self.canvas_window, 0, 0)
54
+ else:
55
+ self.canvas.itemconfig(self.canvas_window, width=event.width)
56
+ self.canvas.coords(self.canvas_window, 0, 0)
57
+
58
+ def _on_mousewheel(self, event):
59
+ self.canvas.yview_scroll(int(-1 * (event.delta / 120)), "units")
60
+
61
+ def render(self, data_list, template_class):
62
+ """Отрисовывает карточки в виде сетки."""
63
+ # Очистка
64
+ for child in self.scrollable_frame.winfo_children():
65
+ child.destroy()
66
+
67
+ # Настройка веса колонок, чтобы они были равными
68
+ for col in range(self.columns):
69
+ self.scrollable_frame.columnconfigure(col, weight=1)
70
+
71
+ # Размещение карточек
72
+ for index, item in enumerate(data_list):
73
+ row = index // self.columns # Целочисленное деление для номера строки
74
+ column = index % self.columns # Остаток от деления для номера колонки
75
+
76
+ card = template_class(self.scrollable_frame, item)
77
+ # Используем grid вместо pack
78
+ card.grid(row=row, column=column, padx=10, pady=5, sticky="nsew")
@@ -0,0 +1,10 @@
1
+ Metadata-Version: 2.4
2
+ Name: tkonstructor
3
+ Version: 0.1.0
4
+ Summary: A universal card designer for Tkinter with scrolling and grid support.
5
+ Author: FiRe
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: License :: OSI Approved :: MIT License
8
+ Classifier: Operating System :: OS Independent
9
+ Requires-Python: >=3.7
10
+ Description-Content-Type: text/markdown
@@ -0,0 +1,6 @@
1
+ tkonstructor/__init__.py,sha256=ke9w0GrGUWciAPCjGSq1ynUE6fgwSZ-JThQ424vR8aU,33
2
+ tkonstructor/card_area.py,sha256=v-vDmmTK6SsudhI_VN_e8IwlqFURNkLD_L72rZJ8IFk,3477
3
+ tkonstructor-0.1.0.dist-info/METADATA,sha256=ElojpxI1NWVTMjvxPP-crClV7vycj3NlroJj1WxMC3E,368
4
+ tkonstructor-0.1.0.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
5
+ tkonstructor-0.1.0.dist-info/top_level.txt,sha256=IoNRs5XhgD8thzsPanF8BCcc87nNTMUetEYP5VT0xls,13
6
+ tkonstructor-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ tkonstructor