|
| 1 | +<p align="center"><img src="./assets/icon.png" alt="TkForge Logo" width="100" height="100"></p> |
| 2 | + |
| 3 | +<p align="center"><strong>TkForge</strong></p> |
| 4 | + |
| 5 | +<p align="center">Перетаскивание в Figma для легкого создания Python GUI</p> |
| 6 | + |
| 7 | +<p align="center"><a href="https://producthunt.com/products/tkforge">Проголосовать на Product Hunt</a> • <a href="https://patreon.com/axorax">Пожертвовать</a></p> |
| 8 | + |
| 9 | +<p align="center"><a href="./README.md">English</a> • <a href="./README_zh.md">中文</a> • <a href="./README_ru.md">Русский</a></p> |
| 10 | + |
| 11 | +> [!IMPORTANT] |
| 12 | +> Пожертвуйте или спонсируйте проект, чтобы помочь ему расти и становиться лучше! (https://patreon.com/axorax) |
| 13 | +> |
| 14 | +> Translated by SiresMacro (@siresmacro in Discord) |
| 15 | +
|
| 16 | +## 📰 Содержание |
| 17 | + |
| 18 | +- [Почему и как?](#-почему-и-как) |
| 19 | +- [Предварительный просмотр приложения](#-предварительный-просмотр-приложения) |
| 20 | +- [Возможности](#-возможности) |
| 21 | +- [Сделано с TkForge](#-сделано-с-tkforge) |
| 22 | +- [Руководство по использованию](#-руководство-по-использованию) |
| 23 | +- [Доступные имена](#-доступные-имена) |
| 24 | +- [Имена с уникальными возможностями](#-имена-с-уникальными-возможностями) |
| 25 | +- [Руководство по использованию CLI](#-руководство-по-использованию-cli) |
| 26 | +- [Добавление CLI exe в переменные среды в Windows](#-добавление-cli-exe-в-переменные-среды-в-windows) |
| 27 | + |
| 28 | +## ❓ Почему и как? |
| 29 | + |
| 30 | +Что-то подобное уже было создано ParthJadhav с Tkinter Designer, но мне понравилась концепция, и я хотел создать что-то похожее, если не лучше, с нуля. TkForge взаимодействует с API Figma, чтобы получить детали файла и превратить их в код. Вы можете посмотреть мое видео об этом, чтобы узнать больше :) |
| 31 | + |
| 32 | +## 💻 Предварительный просмотр приложения |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +## 🔥 Возможности |
| 37 | + |
| 38 | +- Очень простое в использовании |
| 39 | +- Создание GUI методом перетаскивания |
| 40 | +- Поддержка текста-заглушки |
| 41 | +- Поддержка более одного фрейма |
| 42 | +- Автоматически устанавливает передний план в черный или белый цвет в зависимости от фона (не всегда точно) |
| 43 | +- Хеширование изображений |
| 44 | + |
| 45 | +## 🐍 Сделано с TkForge |
| 46 | + |
| 47 | +Присоединяйтесь к нашему [Discord серверу](https://discord.gg/nKUFghjXQu) и размещайте/просматривайте приложения, созданные с помощью TkForge! |
| 48 | + |
| 49 | +## ✨ Руководство по использованию |
| 50 | + |
| 51 | +Сначала вам нужно скачать исполняемый файл со страницы релизов. Затем вам нужно создать токен Figma и скопировать URL вашего проекта. После этого откройте приложение, вставьте токен и URL вашего проекта в приложение и нажмите кнопку, чтобы начать магию! 🪄 |
| 52 | + |
| 53 | +Убедитесь, что ваш проект Figma использует фреймы. TkForge превращает содержимое внутри фреймов в работающие GUI и игнорирует все, что не находится во фрейме. |
| 54 | + |
| 55 | +В проекте Figma убедитесь, что добавили правильные имена для всех ваших элементов. |
| 56 | + |
| 57 | +## 🧿 Доступные имена |
| 58 | + |
| 59 | +| Имя | Элемент Tkinter | 2-й аргумент (текст после пробела) | |
| 60 | +| -------------------------------------- | ---------------- | ---------------------------------- | |
| 61 | +| `text` (можно также назвать как угодно) | canvas text | - | |
| 62 | +| `button` | button | - | |
| 63 | +| `image` | canvas image | имя файла изображения | |
| 64 | +| `textbox` | entry | текст-заглушка | |
| 65 | +| `textarea` | text | текст-заглушка | |
| 66 | +| `spinbox` | spinbox | - | |
| 67 | +| `rectangle` | canvas rectangle | - | |
| 68 | +| `circle` | canvas circle | - | |
| 69 | +| `oval` | canvas oval | - | |
| 70 | +| `line` | canvas line | - | |
| 71 | +| `label` | label | - | |
| 72 | +| `scale` | scale | FROM TO ORIENT | |
| 73 | +| `listbox` (читайте ниже перед использованием) | listbox | - | |
| 74 | + |
| 75 | +Если любой элемент начинается с этих имен, то он будет считаться соответствующим элементом Tkinter. Например; `rectangle 1`, `rectangle`, `Rectangle`, `RecTanGle 69` все будут считаться прямоугольником. Регистр не имеет значения. |
| 76 | + |
| 77 | +## 💎 Имена с уникальными возможностями |
| 78 | + |
| 79 | +### • `label` |
| 80 | + |
| 81 | +Вы можете использовать label вместо text, если хотите изменить этот текст позже. |
| 82 | + |
| 83 | +### • `image` |
| 84 | + |
| 85 | +Вы можете задать имя для файла изображения таким образом: `image myImage`. Изображение будет создано с именем `myImage.png` |
| 86 | + |
| 87 | +### • `circle` и `oval` |
| 88 | + |
| 89 | +Oval и circle работают одинаково, поэтому вы можете использовать любой из них. |
| 90 | + |
| 91 | +### • `circle`, `oval`, `rectangle` и `line` |
| 92 | + |
| 93 | +Поддерживаются цвет обводки и ширина обводки, что означает, что если вы добавите обводку к ним в Figma, они появятся с этой обводкой и шириной обводки в дизайне Tkinter тоже. |
| 94 | + |
| 95 | +### • `textarea` и `textbox` |
| 96 | + |
| 97 | +Чтобы добавить текст-заглушку, просто включите его после имени элемента и пробела. Например, `textbox Hello world` или `textarea Hello world`. Чтобы установить цвет текста-заглушки, добавьте `placeholder_fg="цвет_здесь"`. Пример: |
| 98 | + |
| 99 | +```python |
| 100 | +textbox_1 = TkForge_Entry( |
| 101 | + placeholder="Пример кода", |
| 102 | + placeholder_fg="#fff" |
| 103 | +) |
| 104 | +``` |
| 105 | + |
| 106 | +Используйте `textbox_1.is_placeholder(False)`, чтобы убедиться, что вставленный текст не наследует цвет заглушки. Получите текст-заглушку с помощью `textbox_1.get_placeholder()`. Текст-заглушка может потребовать дополнительной обработки для различных ситуаций. |
| 107 | + |
| 108 | +### • `scale` |
| 109 | + |
| 110 | +Для значений from, to и orient элемента scale вы можете поместить их после имени один за другим, разделенные пробелами. Например; если я хочу scale с from=10, to=50 и orient=HORIZONTAL, то я могу написать `scale 10 50` или `scale 10 50 HORIZONTAL`, а если я хочу orient=VERTICAL, то `scale 10 50 VERTICAL` |
| 111 | + |
| 112 | +### • `listbox` |
| 113 | + |
| 114 | +Рекомендуется избегать использования `listbox`, поскольку он искажает высоту и ширину на несколько пикселей. Единицы Figma работают неправильно, поэтому мне пришлось разделить их на конкретные числа, чтобы приблизиться к внешнему виду Figma. |
| 115 | + |
| 116 | +## 🔮 Руководство по использованию CLI |
| 117 | + |
| 118 | +Если вы хотите запустить его из файла Python, используйте `python tkforge.py ВАШИ_АРГУМЕНТЫ_ЗДЕСЬ` |
| 119 | + |
| 120 | +Вы можете использовать `tkforge --help`, чтобы получить команду помощи. Если вы используете файл Python, используйте `python tkforge.py --help` |
| 121 | + |
| 122 | +Вам может потребоваться использовать `./tkforge.exe` или что-то подобное, если вы не добавили исполняемый файл CLI в переменные среды. |
| 123 | + |
| 124 | +Вот некоторые примеры использования: |
| 125 | + |
| 126 | +### Синтаксис на основе флагов |
| 127 | + |
| 128 | +```sh |
| 129 | +tkforge --id "my_id" --token "my_token" --out ./app |
| 130 | +``` |
| 131 | + |
| 132 | +Вы можете использовать любую из команд ниже, если хотите, чтобы вывод был в текущем каталоге: |
| 133 | + |
| 134 | +```sh |
| 135 | +tkforge --id "my_id" --token "my_token" |
| 136 | + |
| 137 | +tkforge --id "my_id" --token "my_token" --out . |
| 138 | +``` |
| 139 | + |
| 140 | +### Позиционный синтаксис |
| 141 | + |
| 142 | +```sh |
| 143 | +tkforge "my_id" "my_token" output_path |
| 144 | +``` |
| 145 | + |
| 146 | +Вы можете использовать любую из команд ниже, если хотите, чтобы вывод был в текущем каталоге: |
| 147 | + |
| 148 | +```sh |
| 149 | +tkforge "my_id" "my_token" |
| 150 | + |
| 151 | +tkforge "my_id" "my_token" . |
| 152 | +``` |
| 153 | + |
| 154 | +## 🪟 Добавление CLI exe в переменные среды в Windows |
| 155 | + |
| 156 | +https://github.com/user-attachments/assets/f87c6df1-3f9a-442c-a28b-a947b7c7b1f4 |
| 157 | + |
| 158 | +--- |
| 159 | + |
| 160 | +<p align="center"><a href="https://www.patreon.com/axorax">Поддержите меня на Patreon</a> — <a href="https://github.com/axorax/socials">Посмотрите мои социальные сети</a></p> |
0 commit comments