Add your description here
Project description
QtMVVM
MVVM-библиотека для Qt с наблюдаемыми свойствами и привязками данных.
Языки: 🇬🇧 English | 🇷🇺 Русский
Установка
uv add qtmvvm
Быстрый старт
1. Создание наблюдаемых свойств
from qtmvvm import ObservableProperty
# Создание свойства с начальным значением
name = ObservableProperty("John")
age = ObservableProperty(25)
# Получение значения
print(name.value) # "John"
print(name()) # "John"
# Установка значения
name.value = "Jane"
age(30) # Альтернативный синтаксис
2. Создание ViewModel
from qtmvvm import BaseViewModel, computed_property
class PersonViewModel(BaseViewModel):
# Простые свойства
name: str = "John"
age: int = 25
# Вычисляемое свойство (только для чтения, авто-обновление)
@computed_property(depends_on=["name", "age"])
def description(self):
return f"{self.name}, {self.age} лет"
# Использование
vm = PersonViewModel()
print(vm.name) # "John"
print(vm.description) # "John, 25 лет"
vm.name = "Jane"
print(vm.description) # "Jane, 25 лет" (авто-обновление!)
3. Использование операторов биндингов
QtMVVM предоставляет три оператора для привязки данных:
| Оператор | Направление | Описание |
|---|---|---|
>> |
Свойство → Виджет | 1-way биндинг |
@ |
Свойство ↔ Виджет | 2-way биндинг |
<< |
Сигнал → Свойство | Биндинг сигнала |
1-Way биндинг (>>)
from qtmvvm import ObservableProperty
from qtpy.QtWidgets import QLabel
name = ObservableProperty("John")
label = QLabel()
name >> label # При изменении name, label обновляется автоматически
name.value = "Jane" # label.text = "Jane"
2-Way биндинг (@)
from qtmvvm import ObservableProperty
from qtpy.QtWidgets import QLineEdit
name = ObservableProperty("John")
edit = QLineEdit()
name @ edit # Синхронизация в обоих направлениях
edit.setText("Jane") # name.value = "Jane"
name.value = "Bob" # edit.text = "Bob"
Биндинг сигнала (<<)
from qtmvvm import ObservableProperty
from qtpy.QtWidgets import QPushButton
click_count = ObservableProperty(0)
button = QPushButton("Click me")
button.clicked << click_count # Каждый клик увеличивает click_count
Документация
- Полная документация (Русский) — подробное API reference, все миксины биндингов и расширенные примеры
- Full Documentation (English)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
qtmvvm-0.1.0.tar.gz
(29.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
qtmvvm-0.1.0-py3-none-any.whl
(13.9 kB
view details)
File details
Details for the file qtmvvm-0.1.0.tar.gz.
File metadata
- Download URL: qtmvvm-0.1.0.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ad9600c91c1e40c59f2789f9df788aabeaebbd5f9a1f13de85d13f54bd4dbc6
|
|
| MD5 |
effc3d1b6676a1cc26837b73f9f470cc
|
|
| BLAKE2b-256 |
2aaaef2798d4269c5fb04983f71c17142b7110a5c658ec46d4062833e719ef79
|
File details
Details for the file qtmvvm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: qtmvvm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f902b061682d63f24344a9993359e63e973ba4db550d3aa22dc93c909388f5bb
|
|
| MD5 |
2dc47446e13b31ddb029fda54ac0f2ba
|
|
| BLAKE2b-256 |
886d831ea866efa1aea56c84d497148fe9bef23a59173f172a3f4acb0c1836ff
|