Это старая версия документа!
Содержание
Свойство
Свойство - это компонент для хранения типизированных данных, а по факту это класс Python, который имеет графический интерфейс для отображения и редактирования хранимых данных и набор данных, который определяет поведение Свойства. В составе Плагинов используется для хранения пользовательских настроек внутри Контейнера Свойств, также ничто не мешает использовать их в иных целях. Фреймворк PUSSY предлагает некоторое количество готовых свойств.
Познакомимся с понятиями, которые характеризуют Свойства:
- Значение – это важные данные, которые Свойство хранить в себе;
- Параметры – это служебные данные, которые определяют поведение Свойства, по сути являются полями экземпляра класса свойства, их отличительной особенностью является то, что их имя как правило начинается с префикса «p_»;
- Виджет – этот термин должен быть знаком разработчикам Qt приложений, поскольку это элемент графического интерфейса, через который пользователь производит манипуляции со значением.
Если рассуждать в парадигме MVC (Model View Controller (на русском: Модель Представление Контроллер)), то Свойство действует на уровнях модели и представления, тут есть один важный момент: виджет создается при обращении к специальному методу, также чтобы обновить значение Свойства требуется вызвать специальный метод.
Типы свойств
Как сказано ранее: Свойства это классы Python, которые унаследованы от одного из 2-х базовых классов: с механизмом валидации значения (PropertyValidated) и без (Property).
PropertyValidated реализует механизм валидации значения, валидация происходит автоматически в соответствии с установленными параметрами, при изменении значения свойства или параметров от которых он зависит. Приведу простой пример, есть свойство для ввода целых чисел (IntProperty), которое имеет параметры p_minimum, p_maximum, минимальное и максимальное значения соответственно, если IntProperty имеет значение равное 10, а p_minimum =1, p_maximum = 15, то при изменении p_maximum = 5, значение свойства будет равно 5. Этот механизм добавлен для того, чтобы значение свойства никогда не выходило за установленные пределы.
Дополнительную информацию читайте в материалах: Properties
Применение
Как и говорилось ранее, Свойства изначально задумывались для использования в составе Контейнера Свойств, чтобы поместить свойства в контейнер необходимо создать класс-потомок PropertyContainer, далее свойства записываются в теле класс в виде аннотаций
from PyUB.Types import PropertyContainer class <Имя класса>(PropertyContainer): <имя свойства 1>:<Класс свойства>(<параметры>) <имя свойства 2>:<Класс свойства>(<параметры>) ...
Конечно, можно найти Свойствам и другие применения, для этого читайте Справочник API
