Инструменты пользователя

Инструменты сайта


products:pussy:concepts:property

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:pussy:concepts:property [2023/11/27 20:17] ironmeshproducts:pussy:concepts:property [2023/12/14 15:56] (текущий) ironmesh
Строка 1: Строка 1:
 ====== Свойство ====== ====== Свойство ======
  
-FIXME+<WRAP center round tip 60%> 
 +FIXME Кажется здесь чего-то не хватает. Думаю чем бы дополнить статью</WRAP> 
  
-Свойство - это компонент для хранения типизированных данных, а по факту это класс Python, который имеет графический интерфейс для отображения и редактирования хранимых данных и набор данных, который определяет поведение Свойства. В составе [[:products:pussy:concepts:plugin|Плагинов ]] используется для хранения пользовательских настроек внутри [[:products:pussy:concepts:propertycontainer|Контейнера Свойств]], также ничто не мешает использовать их в иных целях. Фреймворк PUSSY предлагает некоторое количество [[:products:pussy:api:pyub:types:properties:main|готовых свойств]].+Свойство - это компонент для хранения типизированных данных, а по факту это класс Python, который имеет графический интерфейс для отображения и редактирования хранимых данных и набор параметров, который определяет поведение Свойства. В составе [[:products:pussy:concepts:plugin|Плагинов ]] используется для хранения пользовательских настроек внутри [[:products:pussy:concepts:propertycontainer|Контейнера Свойств]], но ничто не мешает использовать их в иных целях. Фреймворк PUSSY предлагает некоторое количество [[:products:pussy:api:pyub:types:properties:main|готовых свойств]], но несложно разработать собственные свойства, следуя данному [[:products:pussy:other:dev_custom_property|уроку]].
  
 Познакомимся с понятиями, которые характеризуют Свойства: Познакомимся с понятиями, которые характеризуют Свойства:
  
-  * **Значение **– это важные данные, которые Свойство хранить в себе;+  * **Значение **– это важные данные, которые Свойство хранит в себе;
   * **Параметры **– это служебные данные, которые определяют поведение Свойства, по сути являются полями экземпляра класса свойства, их отличительной особенностью является то, что их имя как правило начинается с префикса "**p_**";   * **Параметры **– это служебные данные, которые определяют поведение Свойства, по сути являются полями экземпляра класса свойства, их отличительной особенностью является то, что их имя как правило начинается с префикса "**p_**";
   * **Виджет **– этот термин должен быть знаком разработчикам Qt приложений, поскольку это элемент графического интерфейса, через который пользователь производит манипуляции со значением.   * **Виджет **– этот термин должен быть знаком разработчикам Qt приложений, поскольку это элемент графического интерфейса, через который пользователь производит манипуляции со значением.
Строка 16: Строка 18:
 ===== Типы свойств ===== ===== Типы свойств =====
  
-Как сказано ранее: Свойства это классы Python, которые унаследованы от одного из 2-х базовых классов: с механизмом валидации значения ([[:products:pussy:api:pyub:types:properties:propertyvalidated|]]) и без ([[:products:pussy:api:pyub:types:properties:property|]]).+Свойства это классы Python, которые унаследованы от одного из 2-х базовых классов: с механизмом валидации значения ([[:products:pussy:api:pyub:types:properties:propertyvalidated|]]) и без ([[:products:pussy:api:pyub:types:properties:property|]]).
  
-[[:products:pussy:api:pyub:types:properties:propertyvalidated|]] реализует механизм валидации значения, валидация происходит автоматически в соответствии с установленными параметрамипри изменении значения свойства или параметров от которых он зависит. Приведу простой пример, есть свойство для ввода целых чисел ([[:products:pussy:api:pyub:types:properties:intproperty|]]), которое имеет параметры //p_minimum, p_maximum//, минимальное и максимальное значения соответственно,  если [[:products:pussy:api:pyub:types:properties:intproperty|]] имеет значение равное 10, а //p_minimum =1, p_maximum = 15//, то при изменении //p_maximum = 5, //  значение свойства будет равно 5. Это механизм добавлен для того, чтобы значение свойства никогда не выходило за установленные пределы.+[[:products:pussy:api:pyub:types:properties:propertyvalidated|]] реализует механизм валидации значения, валидация происходит автоматически в соответствии с установленными параметрами при изменении значения свойства или параметров от которых он зависит. Приведу простой пример, есть свойство для ввода целых чисел ([[:products:pussy:api:pyub:types:properties:intproperty|]]), которое имеет параметры //p_minimum, p_maximum//, минимальное и максимальное значения соответственно, если [[:products:pussy:api:pyub:types:properties:intproperty|]] имеет значение равное 10, а //p_minimum =1, p_maximum = 15//, то при изменении //p_maximum = 5, //  значение свойства будет равно 5. Этот механизм добавлен для того, чтобы значение свойства никогда не выходило за установленные пределы.
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
Строка 25: Строка 27:
  
 </WRAP> </WRAP>
 +
 +===== Применение =====
 +
 +Как и говорилось ранее, Свойства изначально задумывались для использования в составе [[:products:pussy:concepts:propertycontainer|Контейнера Свойств]], чтобы поместить свойства в контейнер необходимо создать класс-потомок [[:products:pussy:api:pyub:types:propertycontainer|]], далее свойства записываются в теле класса в виде аннотаций
 +
 +<code python>
 +from PyUB.Types import PropertyContainer
 +
 +class <Имя класса>(PropertyContainer):
 +    <имя свойства 1>:<Класс свойства>(<параметры>)
 +    <имя свойства 2>:<Класс свойства>(<параметры>)
 + ...
 +
 +
 +</code>
 +
 +Можно использовать свойства самостоятельно в стороннем Qt приложении. Чтобы создать экземпляр свойства нужно использовать команду:
 +
 +<code python>
 +<переменная> = <Класс свойства>(<параметры свойства>) #создаем экземпляр и сохраняем его в переменной
 +
 +
 +</code>
 +
 +Затем вызвать у экземпляра свойства метод //[[http://wiki.mig-ironmesh.ru/products;pussy;api;pyub;types;properties;abstractproperty#get_input_widget|get_input_widget()]]// , полученный виджет нужно будет встроить в свой интерфейс, ссылка на него будет сохранена в атрибуте //_widget_ref//, чтобы извлечь значение из виджета и обновить значение свойства нужно вызвать метод //[[http://wiki.mig-ironmesh.ru/products;pussy;api;pyub;types;properties;abstractproperty#extract_widget_data|extract_widget_data()]]. // Если нужно получить имя свойства следует вызвать метод //[[http://wiki.mig-ironmesh.ru/products;pussy;api;pyub;types;properties;abstractproperty#get_name|get_name()]]//.
 +
 +Конечно, можно найти Свойствам и другие применения, чтобы узнать больше о реализации читайте [[:products:pussy:api:pyub:main|Справочник API]]
  
  
products/pussy/concepts/property.1701105441.txt.gz · Последнее изменение: (внешнее изменение)