如何将 Notebook 添加到 VBox 中的 Box?

nja*_*lam 7 pygtk application-development pygi glade

我在 Glade 创建了一个空框来添加一个 Notebook。我没有在 Glade 中添加实际 Notebook 的原因是因为我听说您无法在 Glade 中添加页面到 Notebook 中。

因此,在 Glade 中,我在 VBox 的空槽中创建了一个 Box。我正在运行的代码是:

self.box = self.builder.get_object("box")

self.subjects = Gtk.Notebook()
self.box.add(self.subjects)
Run Code Online (Sandbox Code Playgroud)

运行时没有任何反应,除了我相信无论如何都会发生的这些警告:

/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for object `Window' can't be set after construction
Gtk.Window.__init__(self, type=type, **kwds)
/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for object `NotetakerWindow' can't be set after construction
Gtk.Window.__init__(self, type=type, **kwds)
Run Code Online (Sandbox Code Playgroud)

Rob*_*ans 10

这是一个具有上下文的示例

from gi.repository import Gtk

class Handler:
    def onDeleteWindow(self, *args):
        Gtk.main_quit(*args)

    def addNotebookClick(self, *args):
        vbox = builder.get_object("attachtome")
        mynote = builder.get_object("notebook1")
        temp = Gtk.Box()
        mynote.reparent(temp)
        vbox.pack_start(temp, expand=False, fill=False, padding=0)
        window.show_all()

builder = Gtk.Builder()
builder.add_from_file("howtoaskaprogrammingquestion.glade")
builder.connect_signals(Handler())
window = builder.get_object("window1")
window.show_all()

Gtk.main()
Run Code Online (Sandbox Code Playgroud)

它适用于这个空地文件

它提供了这个功能: 在此处输入图片说明

如果您使用自己的笔记本,这也有效。请注意,当您运行该示例时,您会看到窗口几何体(正在添加的对象)发生了轻微的变化,但它似乎没有渲染,因为它还没有任何选项卡。

from gi.repository import Gtk
class Handler:
    def onDeleteWindow(self, *args):
        Gtk.main_quit(*args)

    def addNotebookClick(self, *args):
        vbox = builder.get_object("attachtome")
        mynote = Gtk.Notebook()
        #mynote = builder.get_object("notebook1")
        #temp = Gtk.Box()
        #mynote.reparent(temp)
        vbox.pack_start(mynote, expand=False, fill=False, padding=0)
        window.show_all()

builder = Gtk.Builder()
builder.add_from_file("howtoaskaprogrammingquestion.glade")
builder.connect_signals(Handler())
window = builder.get_object("window1")
window.show_all()

Gtk.main()
Run Code Online (Sandbox Code Playgroud)