6

我目前正在使用 GTK+(和 Glade)在 Python 中开发一个小型应用程序。到目前为止,一切都非常容易集成,直到我想出了添加选项卡而不是弹出窗口的想法。注意:仍然使用 Python 2.7+

是否有任何简单的方法可以在类似结构的新标签(笔记本)中实现现有页面?我很难找到如何为每个在 glade 中创建的单独选项卡添加内容。也许是一个更“明确”的问题:使用每个不同的选项卡调用特定的 V/HBox 需要什么笔记本功能?当前结构看起来像(减去菜单/状态栏):

[ mainWindow ] --> (1) mainOverview (gtkVbox) --> (2A) mainContent (gtkHbox) ... other non-related content

我希望的结构如下所示:

[ mainWindow ] --> (1) mainOverview --> (2) noteBook --> (3) Tab1 --> (4) mainContent (gtkHbox) -- (3) Tab2 --> (4) secondaryContent (gtkHbox)

应用程序本身工作正常(多线程,功能齐全),没有选项卡,mainContent(gtkHbox)包含文件/递归目录分析器,一些复选框和一般概述。我希望有一种简单的方法来gtkHbox仅在Tab1选择时显示此主窗口()。

很难找到好的参考页面,这些页面显示了按笔记本选项卡调用内容页面的正确方法。非常感谢任何参考页面或有用的链接!到目前为止感谢!如果这是一个相当新奇的问题,我深表歉意,我对 Python 编码并不陌生,但另一方面是接口......;)

4

2 回答 2

1

不是答案,但看起来“another.anon.coward”已经在评论中回答了这个问题......

如果您双击该选项卡,则会选择该页面以在 Glade 中添加内容。您可以继续为该页面添加内容。至于切换,您可以使用 set_current_page 切换到要显示其内容的页面。注册“switch-page”信号以找出已切换到的页面。

于 2014-02-26T18:15:11.840 回答
0

单击 glade 左侧的小部件资源管理器(对象检查器)上的笔记本小部件。然后使用左右键盘箭头键在选项卡之间移动。您也可以双击标签的标签,正如 pyrotherm 在他的回答中所说的那样。但是,如果您想以编程方式使用 Gtk.builder 类的 get_object 方法从 ui 中获取笔记本对象。然后执行此操作以添加页面

builder = Gtk.Builder()
builder.add_from_file("example.glade")

self.notebook = builder.get_object("notebook1") # set the id of the notebook in glade
self.page1 = Gtk.Box()
self.page1.add(Gtk.Label(label="Default Page!"))
self.notebook.append_page(self.page1, Gtk.Label(label="Plain Title"))

现在添加您想要的内容。现在谈谈信号。Pyrotherm 已经回答了这个问题。虽然没有名为 switch-page 的信号。其名为 switch_page。您可以在此处查看笔记本的信号列表

于 2022-01-05T05:21:15.767 回答