Python 从Glade文件中获取所有对象

Python 从Glade文件中获取所有对象,python,gtk,gtk3,glade,pygobject,Python,Gtk,Gtk3,Glade,Pygobject,我知道可以使用以下方法从glade文件导入特定对象: builder.add_objects_from_file("example.glade", ("button1", "button2")) 但正如您所看到的,我必须传递一个要导入的对象列表 有没有办法导入.glade文件中的所有内容?不必在此处指定名称的所有对象?当您使用gtk\u builder\u从\u文件添加\u对象时,您正在将特定对象合并到现有的GtkBuilder实例,该实例将实例化这些相同的对象。仅当您需要UI定义文件中的一组

我知道可以使用以下方法从glade文件导入特定对象:

builder.add_objects_from_file("example.glade", ("button1", "button2"))
但正如您所看到的,我必须传递一个要导入的对象列表


有没有办法导入.glade文件中的所有内容?不必在此处指定名称的所有对象?

当您使用
gtk\u builder\u从\u文件添加\u对象时,您正在将特定对象合并到现有的GtkBuilder实例,该实例将实例化这些相同的对象。仅当您需要UI定义文件中的一组特定对象时,使用此函数/方法才有用

GtkBuilder
的正常用法是完全加载它,然后检索要处理的对象
gtk\u builder\u get\u object
。但是如果您的目标是检索所有对象,那么使用
gtk\u builder\u get\u objects
,它将返回一个
GSList
。使用此函数/方法时,假定您已从文件或其他可能的源加载UI定义文件

作为:

GSList*gtk\u builder\u get\u对象(GtkBuilder*builder)

获取生成器已构造的所有对象。注意 此函数不增加返回的对象的引用计数 对象

返回

新分配的GSList,包含由 GtkBuilder实例。它应该由g_slist_free()释放


我知道这种方法,但出于某种原因,它不适合我。我写道:builder=Gtk.builder();builder.add_from_文件(“ui/myui.glade”);builder.get_objects()。但是,当我尝试为我在glade文件中创建的对象使用方法时(比如,如果我创建了一个窗口,并将其命名为window1),Python会告诉我:NameError:name'window1'不是defined@Madno是否有理由同时获取所有对象?是的。对于glade文件中的每个对象和内容,我不想使用“window=gtk_builder_get_object(“window1”)”之类的东西,而是希望将其分成几行。这就是为什么我要问一种导入所有对象的方法,然后,我可以使用类似于window1的东西。直接设置标题(“标题”)。@Madno-Hmmm这样不行。当你通过glade创建一个UI时,会有很多你不需要编程使用的小部件,因此获取指向它们的指针是完全多余和不相关的。一旦用文件中的数据填充GtkBuilder,它将实例化所有小部件(就像“自动”工厂模式)。然后,您需要在需要时检索要使用的小部件。为此,您使用常规方法,button=builder.get_object(“button1”),然后是button.set_label(....@Madno如果您使用get_objects方法,那么您将拥有一个对象/小部件的链接列表,您必须在该列表上迭代以获得所需的确切对象,甚至需要一个“指针”如果您想重用它,请将其保存到小部件/对象。因此,请按常规操作…将生成器作为python类上的属性,这样您就能够在同一python类/对象范围内的何时何地需要它们时检索小部件/对象。您明白了吗,还是我让您更加困惑了?