如何使用 glade 和 pygobject 在视图之间导航?

How to navigate between views with glade and pygobject?

我正在使用 GTK glade 和 python 开发一个简单的应用程序, 我需要做的是在一些 "views" 之间导航,我解释说,我有一个 "home" 视图,从中我可以转到 2 个不同的视图,称为 "Info" 和 "Datas", 我找不到办法做到这一点。我需要实现一种移动导航,因此当我单击信息时,window 的所有内容都必须消失并且必须显示信息内容。 到现在为止,我可以处理按钮上的点击,但我不知道,也找不到关于如何在没有选项卡或类似内容的情况下进行导航的教程或文档。

__________________________
|          HOME          |
||--------|     |-------||
||  Info  |     | Datas ||
||--------|     |-------||
|________________________| 

__________________________
|          INFO          |
||--------|              |
||  Back  |              |
||--------|              |
|________________________|   

我用这个方法解决了:

  • 在 glade 上创建了一个 GtkWindow(带主页布局)和一个带菜单布局的 GtkBox,然后我将它们存储到两个名为 menu_lay 的变量中和 home_lay 使用 builder.get_object() 函数

  • 写了一个清晰的window函数:

    def clear_window(self):
        for childn in self.window.get_children():
            self.window.remove(childn)
    
  • 单击菜单按钮时,我清除 window,添加菜单布局,然后调用 show_all() window 小部件

    上的方法
    def clk_menu(self,event):
        self.clear_window()
        self.window.add(self.menu_lay)
        self.window.show_all()
    
  • 反之亦然,当单击后退按钮时我清除 window 并添加主页布局

    def clk_back(self,event):
        self.clear_window()
        self.window.add(self.home_l)
        self.window.show_all()
    

我不知道这是否是最好的方法,但目前它还可以。

无论如何,如果您有其他想法、处理方式或建议请回答!

[[编辑]]

此方法有效,但如建议的那样,与 GtkStack 一起使用效果更好 liberforce,可以平稳过渡!

使用 GtkStack 处理您的 home/info 转换。