我知道这是可能从使用一块空地文件中导入特定对象:获取所有对象从glade文件
builder.add_objects_from_file("example.glade", ("button1", "button2"))
但正如你所看到的,我要通过我想要导入的对象的列表。
有没有办法导入.glade文件中的所有内容?所有的对象,而不必在这里指定他们的名字?
我知道这是可能从使用一块空地文件中导入特定对象:获取所有对象从glade文件
builder.add_objects_from_file("example.glade", ("button1", "button2"))
但正如你所看到的,我要通过我想要导入的对象的列表。
有没有办法导入.glade文件中的所有内容?所有的对象,而不必在这里指定他们的名字?
当您使用gtk_builder_add_objects_from_file
时,您正在将特定对象合并到现有的GtkBuilder实例,然后该实例将实例化这些相同的对象。如果您需要UI定义文件中的一组特定对象,则仅使用此函数/方法很有用。
GtkBuilder
的正常使用,将完全加载它,然后检索要处理的对象gtk_builder_get_object
。但是,如果您的目标是检索所有对象,然后使用gtk_builder_get_objects
,这将返回GSList
。使用此函数/方法假定您已经从文件或其他可能的源加载了UI定义文件。
由于documented:
GSList *gtk_builder_get_objects (GtkBuilder *builder);
Gets all objects that have been constructed by builder . Note that this function does not increment the reference counts of the returned objects.
Returns
a newly-allocated GSList containing all the objects constructed by the GtkBuilder instance. It should be freed by g_slist_free().
我知道这种做法,但由于某种原因,它不和我一起工作。我写道:builder = Gtk.Builder(); builder.add_from_file(“ui/myui.glade”); builder.get_objects()。但是当我尝试使用我在glade文件中创建的对象的方法时(例如,如果我创建了一个窗口并将其命名为window1),Python会告诉我:NameError:name'window1'未定义 – Madno
@Madno Is there一个同时获取所有对象的理由? –
是的。我不想为glade文件中的每个对象和事物使用诸如“window = gtk_builder_get_object(”window1“)”之类的东西,而只想在几行中做出来。这就是为什么我要求导入所有对象的方法,然后我可以直接使用类似window1.set_title(“title”)的东西。 – Madno