products:pussy:other:dev_propertycontainer_gui
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:pussy:other:dev_propertycontainer_gui [2023/12/10 02:41] – [искусственный разграничитель удалить!] ironmesh | products:pussy:other:dev_propertycontainer_gui [2023/12/13 14:54] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Разработка интерфейса для Контейнера Свойств ====== | ====== Разработка интерфейса для Контейнера Свойств ====== | ||
| - | FIXME | ||
| - | В данном уроке я расскажу как разработать альтернативный интерфейс для Контейнера свойств, | + | В данном уроке я расскажу как разработать альтернативный интерфейс для |
| {{ : | {{ : | ||
| Строка 37: | Строка 36: | ||
| </ | </ | ||
| - | ===== искусственный разграничитель удалить! ===== | ||
| заметьте, | заметьте, | ||
| - | {{ : | + | {{ : |
| Напомню, | Напомню, | ||
| Строка 47: | Строка 45: | ||
| Итак, в итоге у меня получился следующий код для методов// | Итак, в итоге у меня получился следующий код для методов// | ||
| - | // | ||
| - | А вот так выглядит новый интерфейс, | + | <code python> |
| + | @classmethod | ||
| + | def render_layout(cls) -> QToolBox: | ||
| + | cls._lable_list = {} | ||
| + | cls._tool_box = QToolBox() | ||
| + | |||
| + | def render_page(suffix: | ||
| + | scroll_area = QScrollArea() | ||
| + | scroll_area.setWidgetResizable(True) | ||
| + | widget_content = QWidget() | ||
| + | layout = QFormLayout(widget_content) | ||
| + | layout.setVerticalSpacing(15) | ||
| + | layout.setLabelAlignment(Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) | ||
| + | row: int = 0 | ||
| + | for key, prop in cls.__annotations__.items(): | ||
| + | if not key.endswith(suffix): | ||
| + | cls._lable_list[key] = QLabel() | ||
| + | cls._lable_list[key].setWordWrap(True) | ||
| + | layout.setWidget(row, | ||
| + | layout.setWidget(row, | ||
| + | row += 1 | ||
| + | scroll_area.setWidget(widget_content) | ||
| + | return scroll_area | ||
| + | |||
| + | for i in range(1, 6): | ||
| + | cls._tool_box.addItem(render_page(f" | ||
| + | |||
| + | return cls._tool_box | ||
| + | |||
| + | @classmethod | ||
| + | def retranslate(cls) -> None: | ||
| + | for key, label in cls._lable_list.items(): | ||
| + | label.setText(cls.get_property(key).get_name()) | ||
| + | cls.__annotations__[key].retranslate() | ||
| + | |||
| + | for i in range(cls._tool_box.count()): | ||
| + | cls._tool_box.setItemText(i, | ||
| + | </ | ||
| + | |||
| + | А вот так выглядит новый интерфейс, | ||
| + | |||
| + | В методе // | ||
| - | В методе // | + | Подытожу все вышесказанное. Для |
| - | Ну, вот и все, урок по разработке альтернативного интерфейса для Контейнера свойств подошел к концу, как вы могли убедиться это очень простой процесс, | + | Ну, вот и все, урок по разработке альтернативного интерфейса для Контейнера свойств подошел к концу, как вы могли убедиться это очень простой процесс, |
products/pussy/other/dev_propertycontainer_gui.1702165303.txt.gz · Последнее изменение: (внешнее изменение)