Tabs PyGTK:在gtk.Notebook中的标签之前打包小部件

Tabs PyGTK:在gtk.Notebook中的标签之前打包小部件,tabs,gtk,pygtk,Tabs,Gtk,Pygtk,基本上,我想做的是在gtk笔记本的标签前放一些按钮。我试着制作我自己的笔记本类型的小部件,它工作得很好,但它需要更多的工作才能使它像我所希望的那样灵活,而且效率也不高 以下是我试图实现的目标的模型: 如果您有任何想法,我们将不胜感激,谢谢 Ben.这是一种黑客行为,但您可以将小部件放在单独的选项卡上,然后通过为笔记本注册以下切换页面事件来防止单击该选项卡: def onTabsSwitchPage(self, notebook, page_notUsableInPython, pageNumbe

基本上,我想做的是在gtk笔记本的标签前放一些按钮。我试着制作我自己的笔记本类型的小部件,它工作得很好,但它需要更多的工作才能使它像我所希望的那样灵活,而且效率也不高

以下是我试图实现的目标的模型:

如果您有任何想法,我们将不胜感激,谢谢


Ben.

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

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")
def ontabswitchpage(self,notUsableInPython,pageNumber):
#不允许切换到包含小部件的虚拟选项卡
如果页码==:
笔记本。停止排放(“切换页面”)

请注意,这并不适合所有GTK主题,但它可以工作…

我认为如果不制作自己的笔记本小部件,就没有任何方法可以做到这一点。有几个黑客。其中一张是安迪奇贴的。另一种方法是完全隐藏选项卡(
notebook.set_show_tabs(False)
),并在小部件上方创建一个带有按钮的工具栏,按钮位于左侧,笔记本中切换到该页面的每个选项卡加上一个按钮

您可以继承
gtk.notebook
,覆盖一些方法,如
expose\u event
size\u request
size\u allocate
,而不是从头开始创建自己的笔记本类型小部件,以便处理两种类型的容器子项:页面和按钮。我不知道如何在PyGTK中实现这一点,只有在C中


你也可以考虑标签空间中的按钮是否真的是你想要的。如果用户将笔记本的大小调整到足以使某些选项卡消失,该怎么办?上一个选项卡/下一个选项卡箭头指向何处?按钮发生了什么变化?

您可能有兴趣知道GTK 2.20中添加了此功能,请参阅以下公告中的“GtkNotebook中的更改:

感谢您的快速响应,我已经尝试了Andi建议的破解方法,当你的选项卡超过可用空间时,问题就会出现,当你在结束选项卡上时,按钮就会消失。我之前在考虑从gtk.Notebook继承,但找不到太多关于PyGTK的好文档。我明天再看一看,因为这绝对是最好的选择。如果我无法解决如何实现第二个解决方案,那么我将继续创建自己的小部件。谢谢你的建议:)谢谢你的建议。我已经试过了,就像你说的,它看起来不是最好的。。。我想我要么坚持使用我自己的小部件并使其更好,要么尝试制作一个继承gtk的小部件。无论如何,谢谢:)
笔记本
标签已作为笔记本的一部分删除。