Python GTK+ 小部件名称

10 投票
3 回答
5369 浏览
提问于 2025-04-16 02:50

我怎么才能获取一个控件的“名字”?

当我使用Glade定义一个图形界面时,我可以给窗口里的控件“命名”,但是当我有了一个控件的对象实例后,怎么才能找到这个名字呢?

我试过了 get_property()get_name()$widget.name,但是都没有成功。

更新:我使用的是GtkBuilder文件格式(也就是XML格式)。

解决方案:我用过的一个方法是:在从 GtkBuilder 获取控件后,使用 set_property("name", name) 方法来设置控件的名字。

3 个回答

0

给定一个小部件 w,那么 w.get_name() 会返回什么呢?如果返回的是 None,那就意味着这个小部件没有 name 属性。也许你想用 gtk.glade.get_widget_name(w) 来获取它的名字?(我不太确定小部件的 name 属性和它在创建时使用的 Glade XML 中的名字是不是同一个东西……)

2
self.builder.get_name(widget)

这里的“widget”指的是一个小工具对象。这个内容是基于Ubuntu系统中打包好的快速开发环境来工作的。

15

我使用的是类方法,这对我来说很有效:

gtk.Buildable.get_name(widget)

参考资料

PyGtk: gtk.Buildable.get_name

Gtk3: Gtk.Buildable.get_name

引用自 gtk2 GtkBuilder

在GTK+ 2.20之前,gtk.Builder会把构建的控件的“名称”属性设置为“id”属性。但在GTK+ 2.20及更新版本中,你需要使用gtk.Buildable.get_name()来获取“id”,或者在你的用户界面定义中设置“名称”属性。


进一步说明

有一些报告的错误是GtkBuilder把控件的名称设置为构建器的ID,或者根本不设置名称。可以查看 UbuntuGNOME 的错误报告。我不知道为什么这些错误会说它设置了ID而不是名称,因为我只见过名称没有被设置。

撰写回答