2012-06-25 284 views
0

我有一個GTK窗口,上面有一些小部件。那裏有一堆擴展器,它們都具有相同的信號處理器activate。在這個處理程序中,我想獲取widget對象的名稱。獲取對象名稱

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'
所以基本上,當expander2被點擊時,我想把「expander2」作爲一個字符串。當單擊expander14時,我想將「expander14」作爲字符串。有沒有辦法做到這一點?

如果不能(容易)來完成,這也將是一個可以接受的,如果我能得到一些其他財產,我可以告訴單擊了哪個部件。

回答

1

據我理解對應的方法被稱爲get_name(),例如:

print expander.get_name() 

編輯:用於與GTK 2.20+的gtk.Buildable.get_name()方法基於林間空地的UI,而應使用的gtk.Widget.get_name(),因爲控件名稱存儲在UI定義的id屬性中。

+0

這似乎輸出對象** **類型,而不是**姓名**。它輸出* GtkExpander *無論點擊哪個按鈕。 – RobinJ

+0

@RobinJ:這個gtk接口是如何構建的?它是用林間空地還是手動建造的? –

+0

Glade ------------- – RobinJ