基本上,我想要做的是在gtk.Notebook中的选项卡前放置一些按钮。我尝试制作自己的笔记本类型小部件并且效果很好,但它需要更多的工作才能使它像我想的那样灵活,而且效率也不高。
以下是我正在尝试实现的模型:http://imagebin.ca/view/84SC0d.html
非常感谢任何想法,谢谢。
本。
答案 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_request
,size_allocate
和{{1}},为了处理两种类型的容器子:页面和按钮。我不知道如何在PyGTK中这样做,只有在C。
您还可以考虑选项卡空间中的按钮是否真正符合您的要求。如果用户将笔记本的大小调整到足以使某些标签消失,该怎么办?前一个标签/下一个标签箭头在哪里?按钮会发生什么?