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 radio_group segmented choice_grid |
| 표시 | card chip hud_panel chip_panel avatar skeleton alert table tabs breadcrumb dropdown 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, "Oathkeeper", _inspect, Color.TRANSPARENT,
"Longsword / Attack 42", false)
두 줄 항목은 위아래 여백이 같고 한 줄 항목보다 넉넉하며, 제목·요약 묶음이 아이콘 옆 세로 가운데에 선다 — 컨테이너가 줄을 더 높게 늘려도, 요약이 여러 줄로 접혀도 그렇다. 줄 전체가 그대로 한 번에 눌린다.
medieval_light 에서 같은 팩토리 호출.흐르는 줄의 함정
wrap_row 에 넣는 것은 자연 폭이어야 한다. 줄바꿈을 켠 채 두면 최소 폭이 거의 0 이
되고, 흐르는 줄은 그 최소 폭으로 칸을 잡는다 — 버튼 하나가 한 글자 폭으로 쪼그라들어 글자가
세로로 한 자씩 내려간다. 팩토리가 이것을 자동으로 막는다.
빈 목록을 빈 채로 두지 않는다
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 | 모달이 열려 있는 동안 카드를 숨긴다 |