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_colorcorner_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()GoCoachMarkGoSurfaceGoScroll.new()
_make_close_button()GoPromptCardGoSurfaceGoIconButton.new()
_make_surface()GoSheetGoDialogsGoSurface.new()
_should_pause()GoCoachMark模态窗口打开期间隐藏卡片