使用 gtkglade 构建可重用组件
我正在编写一个简单的应用程序,并使用 Glade (gtk) 作为 UI。我需要许多窗口(~10),其中一个将根据命令行标志、其他上下文内容等打开。
现在,所有这些窗口都非常相似,它们有 3 个顶级选项卡,最后一个选项卡与所有,都有一个“确定”和“退出”按钮等,所以我正在寻找一种在林间空地构建这些窗口的方法。我可以复制粘贴一个窗口并对其进行更改,但我正在寻找一种更好的方法,这将允许我重用窗口的公共部分。
另外,我使用 pygtk 来加载窗口。
I am writing a simple application and am using glade (gtk) for the UI. I need many windows (~10), of which one will open depending upon the command line flags, other contextual stuff etc.
Now, all these windows are pretty much similar, they have 3 top level tabs, the last tab is the same in all, all have a OK
and Quit
button etc., so I am looking for a way to build these windows in glade. I could copy paste one window and make the changes in that, but I am looking for a better way, that will allow me to reuse the common parts of the windows.
Also, I am using pygtk for loading up the windows.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用您提到的常见方面设计一个小部件。无论您需要在哪里实现不同的东西,都可以为 GtkAlignment 指定一个适当的名称。不要忘记更改 GtkAlignment 的对齐方式和填充值。
在 PyGTK 中,您可以 gtk.Builder.get_object( name) 来访问这些空白区域并在其中添加额外的组件(也可以使用 Glade 进行设计)。
Design a widget with the common aspects you mention. Wherever you need to implement something different, put a GtkAlignment with an appropriate name. Don't forget to change the alignment and fill values of the GtkAlignment.
In PyGTK you can gtk.Builder.get_object(name) to get access to these empty regions and add the extra components within them (which can also be designed with Glade).
好的,在 detly 的回答的帮助下,我能够让一些东西发挥作用。对于任何需要它的人,这就是我所做的。
main.glade 包含窗口以及我需要在所有窗口中显示的所有常见内容。 comp.glade 包含一个窗口,其中有一个 vbox 组件,其中包含我需要的额外内容,我们将其称为“top_comp”。
现在,在 main.glade 中,我将 gtk.Alignment 组件放在需要加载额外组件的位置,并将其称为“comp_holder”。使用我拥有的构建器,我做
这个方法现在似乎有效,但我不知道这是否是做这件事的正确方法。
对于以上任何建议欢迎提出。
Ok, with the help of detly's answer, I am able to get something working. For anyone who needs it, here is what I did.
main.glade contains the window and all the common cruft that I need to be displayed in all windows. comp.glade contains a window, with a vbox component with the extra stuff I need, lets call it 'top_comp'.
Now, in main.glade, I put a gtk.Alignment component in the place where I need the extra component to load, and call it, say, 'comp_holder'. With the builder I have, I do
This method seems to work for now, but I don't know if it is the correct way to do this thing.
Any suggestions for the above welcome.