Вызовите Button.new() напрямую — и внутренние отступы, высота и перенос строк начнут слегка
расходиться от экрана к экрану. Это расхождение незаметно при разборе кода и очевидно на скриншоте.
| Группа | Функции |
|---|---|
| Структура | column row wrap_row padding spacer divider responsive_grid aspect foldable |
| Текст | label label_key line section typography |
| Кнопки | button button_key icon_button list_button list_row apply_icon style_choice_card style_chip_button style_chip_label |
| Ввод | line_edit textarea toggle checkbox slider picker select dropdown radio_group segmented choice_grid |
| Отображение | card chip hud_panel chip_panel avatar skeleton alert table tabs breadcrumb progress empty_state |
| Части поверхности | surface box floating disc face_padding |
| Вспомогательные | form fit_words natural_width tooltip_node card_body let_input_through |
box() всегда возвращает StyleBoxFlat, потому что вызывающий код получает его и
правит bg_color или corner_radius. Если нестандартная форма должна уцелеть,
используйте surface().
Строки списка с описанием
GoStyle.list_button(GoIconSet.SWORD, "Хранитель клятвы", _inspect, Color.TRANSPARENT,
"Длинный меч / Атака 42", false)
Строка со второй строкой текста получает равные верхний и нижний отступы, просторнее однострочной, а пара «заголовок и описание» остаётся выровненной по вертикали рядом с иконкой — в том числе когда контейнер растягивает строку выше и когда описание переносится на несколько строк. Вся строка при этом остаётся одной целью нажатия.
medieval_light.Перетекающие ряды
Кладите элементы управления в wrap_row при их естественной ширине. Если перенос оставить включённым,
минимальная ширина кнопки падает почти до нуля, и ряд меряет свою ячейку по ней — подпись схлопывается до одного символа
на строку. Фабрика не даёт этому случиться.
Никогда не оставляйте пустой список пустым
page.add_child(GoStyle.empty_state(GoIconSet.BOX, "Здесь пока пусто"))
Пустой экран люди читают как сломанный.
Хуки для наследования
Каждое место, где создаётся дочерний виджет, проходит через переопределяемый метод, поэтому проект, наследующий типы gohud, может получить свои подклассы внутри виджетов, не копируя код.
| Хук | Виджет | По умолчанию |
|---|---|---|
_make_scroll() | GoCoachMark, GoSurface | GoScroll.new() |
_make_close_button() | GoPromptCard, GoSurface | GoIconButton.new() |
_make_surface() | GoSheet, GoDialogs | GoSurface.new() |
_should_pause() | GoCoachMark | Скрывает карточку, пока открыто модальное окно |