Chame Button.new() direto e o respiro, a altura e a quebra de linha se desencontram um pouquinho de
uma tela para outra. Esse desencontro é invisível em uma revisão de código e óbvio em uma captura de tela.
| Grupo | Funções |
|---|---|
| Estrutura | column row wrap_row padding spacer divider responsive_grid aspect foldable |
| Texto | label label_key line section typography |
| Botões | button button_key icon_button list_button list_row apply_icon style_choice_card style_chip_button style_chip_label |
| Entrada | line_edit textarea toggle checkbox slider picker select dropdown radio_group segmented choice_grid |
| Exibição | card chip hud_panel chip_panel avatar skeleton alert table tabs breadcrumb progress empty_state |
| Peças de superfície | surface box floating disc face_padding |
| Auxiliares | form fit_words natural_width tooltip_node card_body let_input_through |
box() sempre devolve um StyleBoxFlat, porque quem chama recebe o objeto e
ajusta bg_color ou corner_radius. Use surface() quando uma forma
personalizada precisa sobreviver.
Linhas de lista com uma descrição
GoStyle.list_button(GoIconSet.SWORD, "Guardiã do Juramento", _inspect, Color.TRANSPARENT,
"Espada longa / Ataque 42", false)
Uma linha com uma segunda linha de texto ganha respiro igual em cima e embaixo, mais folgado que o de uma linha simples, e o par título/descrição fica centralizado na vertical ao lado do ícone — inclusive quando um contêiner estica a linha e depois que a descrição quebra em várias linhas. A linha inteira continua sendo um único alvo de toque.
medieval_light.Linhas que fluem
Coloque os controles em um wrap_row na largura natural deles. Com a quebra de linha ligada, a
largura mínima de um botão cai para quase nada e a fileira dimensiona a célula por ela — o rótulo desaba para um
caractere por linha. A fábrica evita isso por você.
Nunca deixe uma lista vazia realmente vazia
page.add_child(GoStyle.empty_state(GoIconSet.BOX, "Nada por aqui ainda"))
As pessoas leem uma tela em branco como quebrada.
Ganchos para subclasses
Todo ponto em que um widget filho é construído passa por um método sobrescrevível, então um projeto que cria subclasses dos tipos do gohud consegue colocar as próprias subclasses dentro dos widgets sem copiar código.
| Gancho | Widget | Padrão |
|---|---|---|
_make_scroll() | GoCoachMark, GoSurface | GoScroll.new() |
_make_close_button() | GoPromptCard, GoSurface | GoIconButton.new() |
_make_surface() | GoSheet, GoDialogs | GoSurface.new() |
_should_pause() | GoCoachMark | Esconde o cartão enquanto um modal está aberto |