You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在libhandy中通过代码选中指定的HdyPreferencesPage

解决GNOME libhandy中代码切换HdyPreferencesWindow标签页的问题

虽然HdyPreferencesWindow没有直接提供切换标签页的公开API,但它内部是通过HdyViewStack来管理所有HdyPreferencesPage的,我们可以通过获取这个视图栈来实现标签页切换:

核心思路

HdyPreferencesWindow的内容区域本身就是一个HdyViewStack实例,调用hdy_preferences_window_get_content()(对应PyGObject中的get_content())即可拿到这个栈,之后用HdyViewStack的方法切换页面。

代码示例

C语言实现

// 假设window是你的HdyPreferencesWindow实例,your_page是目标HdyPreferencesPage
HdyViewStack *stack = HDY_VIEW_STACK(hdy_preferences_window_get_content(HDY_PREFERENCES_WINDOW(window)));

// 方式1:通过页面的name属性切换(推荐,需提前给HdyPreferencesPage设置name)
hdy_view_stack_set_visible_child_name(stack, "settings-page-1");

// 方式2:直接传入目标HdyPreferencesPage实例
hdy_view_stack_set_visible_child(stack, HDY_WIDGET(your_page));

Python(PyGObject)实现

# 假设window是你的HdyPreferencesWindow对象,target_page是目标HdyPreferencesPage
stack = window.get_content()

# 方式1:通过页面名称切换
stack.set_visible_child_name("account-settings")

# 方式2:直接传入页面对象
stack.set_visible_child(target_page)

注意事项

  • 如果使用名称切换,需要确保每个HdyPreferencesPage都通过gtk_widget_set_name()(或UI文件中设置name属性)指定了唯一的名称。
  • 该方法依赖libhandy的内部结构,但从libhandy的版本迭代来看,这个逻辑一直保持稳定,不会轻易变更。

内容的提问来源于stack exchange,提问作者Lanchon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:48:10