获取对象名称

时间:2012-06-25 14:51:28

标签: python object gtk pygtk

我有一个带有一些小部件的GTK窗口。那里有一堆扩展器,它们都有相同的activate信号处理程序。在这个处理程序中,我想获取小部件对象的名称。

def exItem_activated (self, widget, data=None):
    for i in range (0, 15):
        self.builder.get_object ('exItem' + (str)(i + 1)).set_expanded (False)
    widget.expanded = True

    print widget.name
然而,

widget.name不起作用; AttributeError: 'Expander' object has no attribute 'name'
所以基本上,当点击expandder2时,我想把“expandder2”作为一个字符串。单击expandder14时,我想将“expandder14”作为字符串。有没有办法做到这一点?

如果这不能(轻松)完成,如果我可以获得一些其他属性来判断哪个小部件被点击,这也是可以接受的。

1 个答案:

答案 0 :(得分:1)

据我所知,相应的方法称为get_name(),例如:

print expander.get_name()

对于使用gtk 2.20+的基于glade的UI,

编辑:应使用gtk.Buildable.get_name()方法而不是gtk.Widget.get_name(),因为窗口小部件名称存储在id属性中UI定义。