将Glade XML与HeaderBar结合使用

时间:2016-04-18 20:27:36

标签: gtk3 glade pygobject

我是使用Glade和PyGTK的初学者,我正在尝试使用标题栏组件创建一个自定义标题栏的窗口,其余的UI通过GLADE文件完成。然而,我得到两个不同的窗口,一个包含标题栏,另一个包含在Glade中开发的UI组件,而不是获得一个窗口。有人能指出我如何让​​它们出现在同一个窗口中。 PFB到目前为止已编写的代码:

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


class HeaderBarWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="MLPP")
        self.set_border_width(10)
        self.set_default_size(400, 200)

        hb = Gtk.HeaderBar()
        hb.set_show_close_button(True)
        hb.props.title = "MLPP"
        self.set_titlebar(hb)

        titleBarImage = Gtk.Image() 
        titleBarImage.set_from_file('TitleIcon.png') 
        hb.pack_start(titleBarImage);   

        gladefile = "MLPP.glade"
        builder = Gtk.Builder()
        builder.add_from_file(gladefile)
        self.add(builder.get_object("window1"))



win = HeaderBarWindow()

win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

1 个答案:

答案 0 :(得分:1)

    builder.add_from_file(gladefile)
    self.add(builder.get_object("window1"))

在这里,你似乎得到了一个"窗口"并将其添加到您的初始窗口。我想你不想添加Glade文件中定义的窗口,但是它的一个孩子。您可能已经定义了Box或其他容器。尝试get_object(box1)或者你确定你想要的小部件。