Skip to main content

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
Гость кнопка гостевого входа без пароля

Офлайн-гайд по демоэкзамену

Показать путь к гайду внутри установленной библиотеки:

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

fastqt6-0.2.1.tar.gz (150.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastqt6-0.2.1-py3-none-any.whl (166.1 kB view details)

Uploaded Python 3

File details

Details for the file fastqt6-0.2.1.tar.gz.

File metadata

  • Download URL: fastqt6-0.2.1.tar.gz
  • Upload date:
  • Size: 150.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for fastqt6-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5ceba1bf276ccd280f23590f604356ef59fddbb5b4908d42eef744ac5274a226
MD5 e277e8f9997c5365e73df5d528c2370b
BLAKE2b-256 61cbee6e0a90f0e94c301e9567b3baef230d5e743dd310b75b1276de7401b1dc

See more details on using hashes here.

File details

Details for the file fastqt6-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: fastqt6-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 166.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for fastqt6-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2bd8e1edd344c2a79794ea28f1c3d8c3e41377a8679e941d52e42eb59b6e4709
MD5 69c504e68150d93b49115a51b13e3df8
BLAKE2b-256 d3b9430f84fc37f7246c6627023151f61848e99332496d01b002f7f0e6303e6f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page