我是使用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()
答案 0 :(得分:1)
builder.add_from_file(gladefile)
self.add(builder.get_object("window1"))
在这里,你似乎得到了一个"窗口"并将其添加到您的初始窗口。我想你不想添加Glade文件中定义的窗口,但是它的一个孩子。您可能已经定义了Box或其他容器。尝试get_object(box1)
或者你确定你想要的小部件。