Skip to main content

DeskKit

DeskKit — конструктор десктоп-приложений на Qt (PySide6 / PyQt6) и MySQL. Собирайте приложение из модулей, экспортируйте автономный проект с чистым Python-кодом.

Установка

pip install deskkit[pyside]   # PySide6
pip install deskkit[pyqt]     # PyQt6

После установки доступна команда deskkit в консоли.

Быстрый старт из консоли

deskkit project my_shop

Если команда не находится в PATH:

python -m deskkit project my_shop

Создаётся папка my_shop/ с готовым приложением, SQL (схема + данные), tips и блок-схемой.

deskkit project MagaZZZ --title "Просто Магазинчик" --database jopa --password dbpass123456
deskkit project biblio --preset library
deskkit project sklad --preset warehouse --no-tips
deskkit presets          # список профилей
deskkit --version

Основные флаги: --preset, --title, -d/--database, --password, -o/--output, --no-auth, --no-seed, --run.

Синонимы: deskkit init …, deskkit new ….

Конструктор (AppBuilder)

Приложение собирается блоками — включайте только нужное:

from deskkit import AppBuilder

AppBuilder("Склад")
    .database("warehouse_db", password="secret")
    .with_auth(guest=False)       # авторизация без гостя
    .with_search()                # поиск
    .with_filter("supplier", "category")  # фильтры
    .with_sort("stock_quantity")  # сортировка
    .with_crud()                  # добавление / изменение / удаление
    .with_formatting()            # условное оформление строк
    .export("my_warehouse", tips=True, flowchart=True)
    .run()

Отключение блоков

AppBuilder("Витрина")
    .database("shop_db")
    .without_auth()        # сразу каталог, без входа
    .without_crud()        # только просмотр
    .without_filters()
    .without_sort()
    .export("vitrina", tips=False)
    .run()

Готовые профили предметных областей

from deskkit import AppBuilder

AppBuilder.from_preset("library").export("biblio").run()
AppBuilder.from_preset("warehouse").database("wh").export("sklad").run()
AppBuilder.from_preset("cinema").export("kino").run()

Доступные профили: shop, library, warehouse, autoservice, cinema.

У каждого профиля — свои тестовые данные в sql/database.sql (книги, склад, автосервис, фильмы и т.д.). Схема таблиц общая, чтобы приложение работало без изменений.

Экспорт автономного проекта

По умолчанию export_project=True — создаётся папка с обычным кодом (без import deskkit):

my_app/
├── main.py
├── settings.py          # модули вкл/выкл в классе Features
├── database.py
├── ui/
├── sql/database.sql
├── docs/flowchart.svg   # блок-схема ГОСТ 19.701-90 (если flowchart=True)
├── tips/                # подсказки по модулям (если tips=True)
└── requirements.txt
Параметр По умолчанию Описание
export_project True Экспорт автономного проекта
include_tips True Папка tips/ с подсказками
include_flowchart True SVG блок-схема в docs/
run_generated True Запустить проект после экспорта

Блок-схема (ГОСТ 19.701-90)

from deskkit import AppConfig, save_flowchart, generate_flowchart

cfg = AppBuilder("Приложение").build()
save_flowchart(cfg, "docs/flowchart.svg")

svg = generate_flowchart(cfg)  # строка SVG

Символы: овал — начало/конец, прямоугольник — процесс, ромб — условие, параллелограмм — ввод/вывод.
PDF: откройте SVG в браузере → «Печать» → «Сохранить как PDF».

Модули приложения

Блок Метод конструктора Описание
Авторизация with_auth() / without_auth() Вход по логину из БД
Гость with_auth(guest=True/False) Кнопка «без авторизации»
Поиск with_search() По всем текстовым полям
Фильтр поставщика with_filter("supplier") Выпадающий список
Фильтр категории with_filter("category") Выпадающий список
Сортировка with_sort("поле") Кнопка ↑↓
CRUD with_crud() Форма редактирования
Роли with_roles() Разный UI для ролей
Форматирование with_formatting() Цвет строк по условиям

Конфигурация через JSON

from deskkit import AppConfig, ShopApp

ShopApp(AppConfig.from_json("app.json")).run()
{
  "title": "Каталог",
  "database": "my_db",
  "password": "",
  "features": {
    "auth": true,
    "search": true,
    "supplier_filter": true,
    "sort": true,
    "crud": true
  },
  "include_tips": true,
  "include_flowchart": true,
  "output_dir": "my_app"
}

Лицензия

MIT

Release files for deskkit 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deskkit 1.3.1
File Size Uploaded
deskkit-1.3.1.tar.gz 46.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for deskkit 1.3.1
File Interpreter ABI Platform
deskkit-1.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 106.5 kB

Release files / deskkit-1.3.1.tar.gz

Download URL deskkit-1.3.1.tar.gz
Size 46.1 kB
Tags Source
SHA-256 checksum
How to use checksums
532266c409c5f80853d7e58bba22f86cd339304a0598b9cfe6228e3ff92626f0
BLAKE2b-256 checksum
How to use checksums
eafc3bfc7447dabf7517d3f4b5c6676990f0a390f6b584bf3c6c50f3f65cecbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / deskkit-1.3.1-py3-none-any.whl

Download URL deskkit-1.3.1-py3-none-any.whl
Size 60.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a923098dbcae6f750dbe07be1f0ae4c6854ea9e403815f60d837c1271144de4
BLAKE2b-256 checksum
How to use checksums
4ee5288d80f054ad0bf697068d20edec1bccd218a55cf0a39af8f26e038b4824
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

1.3.1 This release

2 release files

1.3.0

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page