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:

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

fastqt6-0.2.2.tar.gz (151.8 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.2-py3-none-any.whl (167.9 kB view details)

Uploaded Python 3

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

Hashes for fastqt6-0.2.2.tar.gz
Algorithm Hash digest
SHA256 70f1975d67fa196f186e58cfa56160277b8fd463227d4a111527964c6ece5ecc
MD5 3e4fd83074084344817c09984f1171ef
BLAKE2b-256 bcb6a29fccdbb1d3bea0803a3fe264f76d803c8db1543b41a8b4123803f87565

See more details on using hashes here.

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

Hashes for fastqt6-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a42c3799c930342087dcd3992048b9c60522cfc40b0a5921fc291bf2135e70d3
MD5 20ec57a7727edc0c0e5b510defa3e3cf
BLAKE2b-256 4d413c1dfa288a2f7c84eb1643444ae56b1308d5d39a1550a859f50ae0628097

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