检查gtk.notebook中定义文本的选项卡是否存在+ gtk3

问题描述 投票:2回答:1

是否有一个函数来检查gtk.notebook中是否有带定义文本的Tab?刚刚找到函数“get_menu_label_text()”,但它只是从它传输的子节点返回选项卡的文本。

只是想知道是否有已经创建的选项卡,所以我不必再次创建它。

真的很简单,但找不到合适的解决方案。

python-3.x gtk3 glade
1个回答
1
投票

不知道为什么你需要这样的功能,因为开发人员应该知道笔记本上发生了什么,因此,它变得“可追踪”。

无论如何,有一些方法,比如使用get_n_pages()获取页面数量,在for循环中使用get_nth_page()获取n页面的子项并调用Gtk.Notebook get_tab_label_text(child)方法。

另一种选择是使用Gtk.Container foreach方法(Gtk.Notebook继承自Gtk.Container)并迭代所有子项并获取制表符标签文本并将其与搜索文本进行比较。

以下非常简单的示例创建了一个带有未引用文本标签的两页笔记本,然后我们只需验证Notebook选项卡标签中是否存在某些标签。

例:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Simple Notebook Example")
        self.set_border_width(3)

        self.notebook = Gtk.Notebook()
        self.add(self.notebook)

        self.page1 = Gtk.Box()
        self.page1.set_border_width(10)
        self.page1.add(Gtk.Label('This is Gtk.Notebook Page X'))
        self.notebook.append_page(self.page1, Gtk.Label('Page X'))

        self.page2 = Gtk.Box()
        self.page2.set_border_width(10)
        self.page2.add(Gtk.Label('This is Gtk.Notebook Page Y'))
        self.notebook.append_page(self.page2, Gtk.Label('Page Y'))

    def check_exists_tab_with_label(self, label):
        self.notebook.foreach(self.check_label_for_child, label) 

    def check_label_for_child(self, widget, label):
        if (self.notebook.get_tab_label_text(widget) == label):
            print ("FOUND")

win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
win.check_exists_tab_with_label('Page Y')
Gtk.main()
© www.soinside.com 2019 - 2024. All rights reserved.