2012-06-25 2 views
0

위젯이있는 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'.
기본적으로 expander2를 클릭하면 "expander2"를 문자열로 가져 오려고합니다. expander14를 클릭하면 "expander14"문자열을 가져 오려고합니다. 이 일을 할 수있는 방법이 있습니까?

(쉽게) 수행 할 수 없다면 어떤 위젯을 클릭했는지 알 수있는 다른 속성을 얻을 수 있으면 받아 들일 수 있습니다. 대응 방법은 지금까지 내가 이해 get_name()라고

답변

1

, 예를 들면 :

print expander.get_name() 

편집 : gtk.Buildable.get_name() 방법 2.20+ GTK와 빈터 기반 UI에 대한는 대신에 사용한다 gtk.Widget.get_name() 위젯 이름이 UI 정의의 id 속성에 저장되어 있기 때문입니다.

+0

** 이름 ** 대신 ** 유형 ** 개체를 출력하는 것으로 보입니다. * GtkExpander *는 어떤 버튼이 클릭되었는지에 관계없이 출력합니다. – RobinJ

+0

@RobinJ :이 gtk 인터페이스는 어떻게 구성되어 있습니까? 빈틈없이 또는 수동으로 건설됩니까? –

+0

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