gohud

GoStyle — одно место, где всё создаётся

← Виджеты

Вызовите 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 — двухстрочные строки списка, быстрые слоты и полосы
Двухстрочные строки, слоты и полосы в средневековом примере — те же вызовы фабрики под medieval_light.

Перетекающие ряды

Кладите элементы управления в wrap_row при их естественной ширине. Если перенос оставить включённым, минимальная ширина кнопки падает почти до нуля, и ряд меряет свою ячейку по ней — подпись схлопывается до одного символа на строку. Фабрика не даёт этому случиться.

Никогда не оставляйте пустой список пустым

page.add_child(GoStyle.empty_state(GoIconSet.BOX, "Здесь пока пусто"))

Пустой экран люди читают как сломанный.

Хуки для наследования

Каждое место, где создаётся дочерний виджет, проходит через переопределяемый метод, поэтому проект, наследующий типы gohud, может получить свои подклассы внутри виджетов, не копируя код.

ХукВиджетПо умолчанию
_make_scroll()GoCoachMark, GoSurfaceGoScroll.new()
_make_close_button()GoPromptCard, GoSurfaceGoIconButton.new()
_make_surface()GoSheet, GoDialogsGoSurface.new()
_should_pause()GoCoachMarkСкрывает карточку, пока открыто модальное окно