Convenient PyQt6 templates for dynamic forms, CRUD windows, Designer .ui files and SQL helpers
Project description
fastqt6
fastqt6 - небольшая библиотека для подготовки к PyQt6/MySQL-проектам на демоэкзамене 09.02.07: готовые шаблоны, CRUD-окна, генерация .ui файлов и офлайн-документы.
Установка
python -m pip install fastqt6
Локально из репозитория:
python -m pip install -e .
Готовый проект «Обувь»
Создать полный шаблон проекта для демоэкзамена:
fastqt6 exam-obuv demo_exam_obuv
cd demo_exam_obuv
python -m venv .venv
.\.venv\Scripts\activate.ps1
python -m pip install -r requirements.txt
python -m src.main
Если команда fastqt6 не находится:
python -m fastqt6.cli exam-obuv demo_exam_obuv
Внутри шаблона уже есть:
src/- PyQt6-приложение с авторизацией, ролями, товарами и заказами;ui/- исходные.uiфайлы Qt Designer и сгенерированные Python-файлы;sql/shoes.sql- база данных MySQL для импорта;resources/images/- изображения и заглушка товара;docs/DEMO_EXAM_OBUV_GUIDE.md- чек-лист требований, баллов и ручной проверки;docs/er_diagram.pdf- ER-диаграмма для сдачи;docs/algorithm.pdf- блок-схема алгоритма для сдачи.
База в шаблоне рассчитана на MySQL: база shoes, порт 3308, пользователь root, пароль пустой. Эти значения легко поменять в src/db.py.
Тестовые пользователи:
| Роль | Логин | Пароль |
|---|---|---|
| Администратор | admin |
1 |
| Администратор | levandr |
1 |
| Менеджер | manager |
1 |
| Клиент | client |
1 |
| Гость | кнопка гостевого входа | без пароля |
Вариант demo_28
Создать проект из публичного репозитория yulechkamsk1/demo_28:
fastqt6 demo-28 demo_28
cd demo_28
python -m pip install -r requirements.txt
python -m authwindow
Этот вариант скачивается с GitHub при выполнении команды. Код не упакован внутрь wheel напрямую, потому что в исходном репозитории нет отдельного файла лицензии. Команда добавляет в созданную папку FASTQT6_README.md, .gitignore и requirements.txt.
Офлайн-гайд по демоэкзамену
Показать путь к гайду внутри установленной библиотеки:
fastqt6 exam-guide
Скопировать гайд в текущий проект:
fastqt6 exam-guide --copy
Вывести текст прямо в терминал:
fastqt6 exam-guide --print
Минимальный CRUD-шаблон
fastqt6 scaffold my_app
cd my_app
python main.py
Он создает маленькое SQLite-приложение с таблицей товаров. Это удобно, если нужно быстро вспомнить базовую механику fastqt6, без большого экзаменационного проекта.
Генерация .ui файлов
Создать окно авторизации:
fastqt6 ui-auth ui/Auth.ui
Создать главное окно с вкладками:
fastqt6 ui-main ui/MainWidget.ui --tabs "Товары,Заказы"
Создать форму:
fastqt6 ui-form ui/ItemDialog.ui \
--title "Товар" \
--class-name ItemDialog \
--field article:text:Артикул \
--field title:text:Название \
--field price:float:Цена
Конвертация .ui в Python:
pyuic6 ui/ItemDialog.ui -o ui/gen/ItemDialog.py
SQL-хелпер
SQLite:
from fastqt6 import SQLDatabase
db = SQLDatabase.sqlite("app.db")
db.insert("products", {"article": "A-1", "title": "Кроссовки", "price": 2500})
rows = db.select("products", where="price > ?", params=(1000,), order_by="title")
MySQL:
from fastqt6 import SQLDatabase
db = SQLDatabase.mysql("shoes", user="root", password="", port=3308)
user = db.login("users", "admin", "1")
rows = db.fetch_all("select * from products where title like ?", ("%кросс%",))
В запросах можно писать ? как универсальный placeholder. Для MySQL библиотека сама заменит его на %s.
Динамические формы
from fastqt6 import field
from fastqt6.forms import DynamicFormDialog
fields = [
field("article", "Артикул", required=True),
field("title", "Название", required=True),
field("price", "Цена", "float", min_value=0),
field("category_id", "Категория", "combo", choices=[("Кроссовки", 1), ("Туфли", 2)]),
]
dialog = DynamicFormDialog(fields, title="Товар")
if dialog.exec():
data = dialog.get_data()
Публикация на PyPI
Для Trusted Publisher на PyPI:
PyPI Project Name: fastqt6
Owner: Leevandr
Repository name: fastQT6
Workflow name: publish.yml
Environment name: pypi
Workflow уже лежит в .github/workflows/publish.yml. После пуша и создания GitHub Release публикация пойдет через GitHub Actions без API-токена.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastqt6-0.2.2.tar.gz.
File metadata
- Download URL: fastqt6-0.2.2.tar.gz
- Upload date:
- Size: 151.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70f1975d67fa196f186e58cfa56160277b8fd463227d4a111527964c6ece5ecc
|
|
| MD5 |
3e4fd83074084344817c09984f1171ef
|
|
| BLAKE2b-256 |
bcb6a29fccdbb1d3bea0803a3fe264f76d803c8db1543b41a8b4123803f87565
|
File details
Details for the file fastqt6-0.2.2-py3-none-any.whl.
File metadata
- Download URL: fastqt6-0.2.2-py3-none-any.whl
- Upload date:
- Size: 167.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a42c3799c930342087dcd3992048b9c60522cfc40b0a5921fc291bf2135e70d3
|
|
| MD5 |
20ec57a7727edc0c0e5b510defa3e3cf
|
|
| BLAKE2b-256 |
4d413c1dfa288a2f7c84eb1643444ae56b1308d5d39a1550a859f50ae0628097
|