products:pussy:other:dev_propertycontainer_gui
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:pussy:other:dev_propertycontainer_gui [2023/12/12 03:55] – [искусственный разграничитель удалить!] ironmesh | products:pussy:other:dev_propertycontainer_gui [2023/12/13 14:54] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Разработка интерфейса для Контейнера Свойств ====== | ====== Разработка интерфейса для Контейнера Свойств ====== | ||
| - | FIXME | ||
| В данном уроке я расскажу как разработать альтернативный интерфейс для [[: | В данном уроке я расскажу как разработать альтернативный интерфейс для [[: | ||
| Строка 37: | Строка 36: | ||
| </ | </ | ||
| - | ===== искусственный разграничитель удалить! ===== | ||
| заметьте, | заметьте, | ||
| Строка 47: | Строка 45: | ||
| Итак, в итоге у меня получился следующий код для методов// | Итак, в итоге у меня получился следующий код для методов// | ||
| - | //(вставить сюда код FIXME )// | + | |
| + | <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, | ||
| + | </code> | ||
| А вот так выглядит новый интерфейс, | А вот так выглядит новый интерфейс, | ||
products/pussy/other/dev_propertycontainer_gui.1702342535.txt.gz · Последнее изменение: (внешнее изменение)