Python GTK+ 小部件名称
我怎么才能获取一个控件的“名字”?
当我使用Glade定义一个图形界面时,我可以给窗口里的控件“命名”,但是当我有了一个控件的对象实例后,怎么才能找到这个名字呢?
我试过了 get_property()
、get_name()
和 $widget.name
,但是都没有成功。
更新:我使用的是GtkBuilder文件格式(也就是XML格式)。
解决方案:我用过的一个方法是:在从 GtkBuilder
获取控件后,使用 set_property("name", name)
方法来设置控件的名字。
3 个回答
给定一个小部件 w
,那么 w.get_name()
会返回什么呢?如果返回的是 None
,那就意味着这个小部件没有 name
属性。也许你想用 gtk.glade.get_widget_name(w)
来获取它的名字?(我不太确定小部件的 name
属性和它在创建时使用的 Glade XML 中的名字是不是同一个东西……)
self.builder.get_name(widget)
这里的“widget”指的是一个小工具对象。这个内容是基于Ubuntu系统中打包好的快速开发环境来工作的。
我使用的是类方法,这对我来说很有效:
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,或者根本不设置名称。可以查看 Ubuntu 和 GNOME 的错误报告。我不知道为什么这些错误会说它设置了ID而不是名称,因为我只见过名称没有被设置。