PyGTK:在gtk.Notebook中的选项卡之前打包小部件

时间:2010-02-06 09:39:50

标签: tabs gtk pygtk

基本上,我想要做的是在gtk.Notebook中的选项卡前放置一些按钮。我尝试制作自己的笔记本类型小部件并且效果很好,但它需要更多的工作才能使它像我想的那样灵活,而且效率也不高。

以下是我正在尝试实现的模型:http://imagebin.ca/view/84SC0d.html

非常感谢任何想法,谢谢。

本。

3 个答案:

答案 0 :(得分:3)

您可能有兴趣知道此功能已添加到GTK 2.20中,请参阅以下公告中的“GtkNotebook中的更改”:http://mail.gnome.org/archives/gtk-devel-list/2010-March/msg00132.html

答案 1 :(得分:0)

这是一个黑客,但您可以将您的小部件放在单独的选项卡上,然后通过为笔记本注册以下切换页事件来防止单击该选项卡:

def onTabsSwitchPage(self, notebook, page_notUsableInPython, pageNumber):
    # Don't allow to switch to the dummy tab containing widgets
    if pageNumber == <put correct tab number here>:
        notebook.stop_emission("switch-page")

请注意,对于所有GTK主题,这看起来不太好,但它有效...

答案 2 :(得分:0)

如果不制作自己的笔记本小部件,我认为没有办法做到这一点。有几个黑客。一个是由AndiDog发布的。另一种方法是完全隐藏选项卡(notebook.set_show_tabs(False)),并在窗口小部件上方创建一个带有按钮的工具栏,左侧是按钮,另外还有一个按钮,用于笔记本中切换到该页面的每个选项卡。

您可以从gtk.Notebook继承,而不是从expose_event继承自己的笔记本类型小部件,而不是覆盖某些方法,例如size_requestsize_allocate和{{1}},为了处理两种类型的容器子:页面和按钮。我不知道如何在PyGTK中这样做,只有在C。

您还可以考虑选项卡空间中的按钮是否真正符合您的要求。如果用户将笔记本的大小调整到足以使某些标签消失,该怎么办?前一个标签/下一个标签箭头在哪里?按钮会发生什么?