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.0.tar.gz (149.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.0-py3-none-any.whl (166.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastqt6-0.2.0.tar.gz
  • Upload date:
  • Size: 149.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.0.tar.gz
Algorithm Hash digest
SHA256 18256e9b8072d871985b5a60b5693e4cfbc66f6f0225ec7576895b88f5f244b0
MD5 59694e901a50ea0970da22659450e219
BLAKE2b-256 dac1061125578f6270b646fbd42def7c9f24a7c7334646db924d244a94cb454a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastqt6-0.2.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91e717aaa396bbd000c623cb0c10e4f73fc92fd1c26adc8d6a5279831326677d
MD5 c012504d52fe88e4bfbd1696d4d746a8
BLAKE2b-256 ab376a35976d6b4792119db94e247e6869da526f8fe34d19ad21b7c64f14b69e

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