Python 使用gtk glade构建可重用组件

Python 使用gtk glade构建可重用组件,python,pygtk,glade,reusability,Python,Pygtk,Glade,Reusability,我正在编写一个简单的应用程序,并将glade(gtk)用于UI。我需要许多窗口(~10),其中一个窗口将根据命令行标志和其他上下文内容打开 现在,所有这些窗口都非常相似,它们有3个顶级选项卡,最后一个选项卡完全相同,都有一个OK和Quit按钮等,因此我正在寻找在glade中构建这些窗口的方法。我可以复制粘贴一个窗口并在其中进行更改,但我正在寻找一种更好的方法,这将允许我重用窗口的公共部分 另外,我正在使用pygtk加载windows。设计一个具有您提到的常见方面的小部件。在需要实现不同功能的地方

我正在编写一个简单的应用程序,并将glade(gtk)用于UI。我需要许多窗口(~10),其中一个窗口将根据命令行标志和其他上下文内容打开

现在,所有这些窗口都非常相似,它们有3个顶级选项卡,最后一个选项卡完全相同,都有一个
OK
Quit
按钮等,因此我正在寻找在glade中构建这些窗口的方法。我可以复制粘贴一个窗口并在其中进行更改,但我正在寻找一种更好的方法,这将允许我重用窗口的公共部分


另外,我正在使用pygtk加载windows。

设计一个具有您提到的常见方面的小部件。在需要实现不同功能的地方,使用一个合适的名称放置一个GtkAlignment。不要忘记更改GTK校准的校准和填充值


在PyGTK中,您可以访问这些空白区域,并在其中添加额外的组件(也可以使用Glade进行设计)。

使用您提到的常见方面设计一个小部件。在需要实现不同功能的地方,使用一个合适的名称放置一个GtkAlignment。不要忘记更改GTK校准的校准和填充值


在PyGTK中,您可以访问这些空区域,并在其中添加额外的组件(也可以使用Glade进行设计)。

好的,在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'))
这种方法目前似乎有效,但我不知道它是否是做这件事的正确方法


欢迎您对以上内容提出任何建议。

好的,在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'))
这种方法目前似乎有效,但我不知道它是否是做这件事的正确方法


欢迎对以上内容提出任何建议。

如何设计要添加到
GtkAlignment
的额外组件,我需要一个顶级窗口或其他东西来设计任何东西。我是否应该设计一个虚拟窗口并使用
.get_object
从该窗口获取组件对象,并将其添加到
GtkAlignment
?@Shrikant Sharat-右键单击您想要作为顶层的任何小部件的按钮,菜单应显示一个项目“将小部件添加为顶层”。点击那个按钮,你们就完成了:)我知道这不是直观的,但它就在那个里。@detly,谢谢,但我看不到那个选项。我使用的是旧版本的glade(3.6.7)。这就是ubunturepos提供的:)。然而,对于遇到的其他人来说,您的解决方案更有意义,所以我会标记它。@Shrikant-可能还有另一种方法,我会做一些研究。@Shrikant-我也在使用3.6.7。如果我右键单击按钮添加
GtkAlignment
,则会出现一个弹出菜单,其中有一项:“将小部件添加为顶级”。你说你看不到吗?我如何设计额外的组件来添加到
GtkAlignment
,我需要一个顶级窗口或其他东西来设计任何东西。我是否应该设计一个虚拟窗口并使用
.get_object
从该窗口获取组件对象,并将其添加到
GtkAlignment
?@Shrikant Sharat-右键单击您想要作为顶层的任何小部件的按钮,菜单应显示一个项目“将小部件添加为顶层”。点击那个按钮,你们就完成了:)我知道这不是直观的,但它就在那个里。@detly,谢谢,但我看不到那个选项。我使用的是旧版本的glade(3.6.7)。这就是ubunturepos提供的:)。然而,对于遇到的其他人来说,您的解决方案更有意义,所以我会标记它。@Shrikant-可能还有另一种方法,我会做一些研究。@Shrikant-我也在使用3.6.7。如果我右键单击按钮添加
GtkAlignment
,则会出现一个弹出菜单,其中有一项:“将小部件添加为顶级”。你说你看不到它?如何做到这一点,请参阅我上面的评论。我经常这样做,我忘记了界面有多么愚蠢:请看我上面的评论,了解如何做到这一点。我经常这样做,我忘记了它的界面是多么愚蠢:P