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

Вариант demo_28

Полный код варианта из публичного репозитория yulechkamsk1/demo_28 лежит прямо внутри установленного пакета:

site-packages/fastqt6/templates/demo_28/

Там находятся authwindow.py, database/, window/, py_ui/, ui/, image/, shoes (1).sql и оригинальный README.md.

При необходимости этот встроенный вариант можно скопировать в отдельную папку:

fastqt6 demo-28 demo_28
cd demo_28
python -m authwindow

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

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

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.3.tar.gz (3.0 MB 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.3-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fastqt6-0.2.3.tar.gz
Algorithm Hash digest
SHA256 a1792841e7a7638b3a442e8ec455f761d2c5ccb47feb71af73d87423f349f016
MD5 169eac87379932eb31881712a3ee0509
BLAKE2b-256 2b76d6f21d2fb13ebd92fff974f59b8fee97499786b0d6984ef5ba777523f9e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastqt6-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 3.0 MB
  • 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 980844db9577413a5caa8a9fef67ab4c9b1c6d3eac6dd81bb997ea30788ad573
MD5 6a58704603c5b5906ad36f3a50ab5f39
BLAKE2b-256 5e211c846a8f7d553f7290f1133b7db50e91d601c0e32b714b0a1bcbfc684219

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