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_row — 附圖示、標題、摘要與尾端標記的清單列。
GoStyle.list_button()
GoStyle.list_button(GoIconSet.SWORD, "守誓者", _inspect, Color.TRANSPARENT,
    "長劍  /  攻擊 42", false)

有第二行的列會得到上下相等的內距,比單行的列更寬鬆,而標題與說明這一組會 在圖示旁邊保持垂直置中 — 即使容器把這一列拉高,或說明換行成好幾行,也一樣。 整列仍然是單一個點擊目標。

medieval_light 範例 — 兩行式清單列、快捷格與量條
中世紀範例中的兩行式清單列、快捷格與量條 — 在 medieval_light 底下呼叫的是同一批工廠函式。

會換行的列

GoStyle.column — 使用主題間距的欄、列與自動換行的列。
row() · wrap_row()

把控制項放進 wrap_row 時,讓它們維持自然寬度。若放著換行不管,按鈕的最小寬度 會掉到幾乎為零,而該列就用這個值決定儲存格大小 — 標籤於是縮成一行一個字。 工廠函式替你擋掉了這件事。

永遠別讓空清單真的空著

GoStyle.skeleton — 載入時的佔位,以及空清單的提示。
skeleton() · empty_state()
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有互動視窗開著時隱藏卡片