使用 gtkglade 构建可重用组件

发布于 2024-10-31 05:24:15 字数 246 浏览 6 评论 0原文

我正在编写一个简单的应用程序,并使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狂之美人 2024-11-07 05:24:15

使用您提到的常见方面设计一个小部件。无论您需要在哪里实现不同的东西,都可以为 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).

梅倚清风 2024-11-07 05:24:15

好的,在 detly 的回答的帮助下,我能够让一些东西发挥作用。对于任何需要它的人,这就是我所做的。

main.glade 包含窗口以及我需要在所有窗口中显示的所有常见内容。 comp.glade 包含一个窗口,其中有一个 vbox 组件,其中包含我需要的额外内容,我们将其称为“top_comp”。

现在,在 main.glade 中,我将 gtk.Alignment 组件放在需要加载额外组件的位置,并将其称为“comp_holder”。使用我拥有的构建器,我做

builder = gtk.Builder()
builder.add_from_file('main.glade'))
builder.add_from_file('comp.glade'))

builder.get_object('top_comp').reparent(builder.get_object('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

builder = gtk.Builder()
builder.add_from_file('main.glade'))
builder.add_from_file('comp.glade'))

builder.get_object('top_comp').reparent(builder.get_object('comp_holder'))

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文