fastqt6 - это небольшая библиотека-шаблон для PyQt6-проектов: динамические формы,
CRUD-окна, SQL-хелперы и генерация .ui файлов для Qt Designer.
Установка:
python -m pip install fastqt6Локальная установка из репозитория:
python -m pip install -e .- Создай новый проект в PyCharm:
File -> New Project -> Pure Python
- Открой вкладку
Terminalвнизу PyCharm и установи библиотеку:
python -m pip install fastqt6- Создай готовый маленький проект:
fastqt6 scaffold .Если команда fastqt6 не находится, используй так:
python -m fastqt6.cli scaffold .-
Запусти файл
main.pyв PyCharm. Откроется простое CRUD-окно с таблицей товаров. Это минимальный пример, который можно дальше менять под свой вариант. -
Для генерации
.uiфайлов Qt Designer:
mkdir ui gen
fastqt6 ui-auth ui/auth.ui
fastqt6 ui-main ui/main.ui --tabs "Каталог,Мои заказы,Все заказы,Статистика"
fastqt6 ui-form ui/product.ui --title "Товар" --class-name ProductDialog \
--field article:text:Артикул \
--field title:text:Название \
--field price:float:Цена- Конвертация
.uiв Python:
pyuic6 ui/product.ui -o gen/product.pyПолный урок для PyCharm: docs/PYCHARM_TUTORIAL.md.
Начиная с версии 0.1.2, инструкция лежит прямо внутри пакета. После
python -m pip install fastqt6 ее можно открыть без интернета в PyCharm:
External Libraries
-> Python ...
-> site-packages
-> fastqt6
-> docs
-> PYCHARM_TUTORIAL.md
Также можно скопировать инструкцию в текущий проект:
fastqt6 tutorial --copyИли просто узнать путь к файлу внутри site-packages:
fastqt6 tutorialfrom PyQt6.QtWidgets import QApplication
from fastqt6 import SQLDatabase, field
from fastqt6.widgets import CrudWindow
SCHEMA = """
create table if not exists products (
id integer primary key autoincrement,
article text not null,
title text not null,
price real not null default 0,
stock integer not null default 0
);
"""
app = QApplication([])
db = SQLDatabase.sqlite("app.db")
db.run_script(SCHEMA)
window = CrudWindow(
db,
table="products",
fields=[
field("article", "Артикул", required=True),
field("title", "Название", required=True),
field("price", "Цена", "float", min_value=0),
field("stock", "Остаток", "int", min_value=0),
],
)
window.show()
app.exec()SQLite:
from fastqt6 import SQLDatabase
db = SQLDatabase.sqlite("app.db")
db.insert("products", {"article": "A-1", "title": "Мяч", "price": 1000})
rows = db.select("products", where="price > ?", params=(500,), order_by="title")
db.update("products", {"price": 1200}, "id=?", (1,))
db.delete("products", "id=?", (1,))MySQL:
from fastqt6 import SQLDatabase
db = SQLDatabase.mysql("sportplus_kvalik", user="root", password="")
user = db.login("users", "admin", "admin")
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()Создать auth.ui:
fastqt6 ui-auth ui/auth.uiСоздать главное окно с вкладками:
fastqt6 ui-main ui/main.ui --tabs "Каталог,Мои заказы,Все заказы,Статистика"Создать форму:
fastqt6 ui-form ui/product.ui \
--title "Товар" \
--class-name "ProductDialog" \
--field article:text:Артикул \
--field title:text:Название \
--field price:float:Цена \
--field stock:int:ОстатокПосле этого файл можно открыть в Qt Designer или конвертировать:
pyuic6 ui/product.ui -o gen/product.pyfastqt6 scaffold my_app
fastqt6 ui-auth ui/auth.ui
fastqt6 ui-main ui/main.ui
fastqt6 ui-form ui/form.ui --field title:text:Название
Для репозитория git@github.com:Leevandr/fastQT6.git заполни форму так:
PyPI Project Name: fastqt6
Owner: Leevandr
Repository name: fastQT6
Workflow name: publish.yml
Environment name: pypi
Workflow уже лежит в .github/workflows/publish.yml. В GitHub желательно создать
environment с названием pypi: Settings -> Environments -> New environment.
Публикация пойдет через GitHub Actions без API-токена: после настройки Trusted Publisher создай GitHub Release или запусти workflow вручную.