选项卡标签中是否可以使用Gtk.Label以外的其他小部件?

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

在笔记本小部件的 python gtk docs 中,提到了

append_page
,它向笔记本添加了页面/选项卡。

append_page
中的第二个参数是一个小部件,它出现在页面标题中(代替默认的Page 1),但是当提供任何其他小部件时,它不会显示任何内容。

是否可以添加一个具有两个子小部件(如(

Gtk.Label
Gtk.Button
))的自定义小部件,以在需要时关闭笔记本中的特定选项卡。

自定义小部件实现将是

class PageTitle(Gtk.Box):
    def __init__(self):
        super().__init__()
        self.title = Gtk.Label("title")
        self.close = Gtk.Button("close")

我们的目标是在页面标题中包含两个小部件。

我尝试传递类的对象

PageTitle
但没有成功,因为这导致页面标题为空

python-3.x gtk3 pygtk pygobject
1个回答
0
投票

您没有将子部件添加到自定义部件

PageTitle
,您应该在
self.show_all()
类中的
__init__
中调用
PageTitle
来显示标签和按钮,这是另一个示例

您要使用的代码看起来像这样

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

class PageTitle(Gtk.Box):
    def __init__(self):
        super().__init__()
        self.title = Gtk.Label("title")
        self.close = Gtk.Button("close")
        self.add(self.title)
        self.add(self.close)
        self.show_all()

class GUI(Gtk.Window):
    def __init__(self):
        super().__init__()
        self.set_default_size(400, 500)
        self.connect("destroy", Gtk.main_quit)
        self.notebook = Gtk.Notebook()
        self.add(self.notebook)
        self.textview = Gtk.TextView()
        self.notebook.append_page(self.textview, PageTitle())
        self.show_all()

app = GUI()
Gtk.main()
© www.soinside.com 2019 - 2024. All rights reserved.