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」を文字列として取得したい。これを行う方法はありますか?

これが(簡単に)できない場合は、どのウィジェットがクリックされたかを知ることができる他のプロパティを取得できれば、それも受け入れられます。

4

1 に答える 1

1

対応するメソッドはget_name()、私が理解している限り、次のように呼び出されます。

print expander.get_name()

編集: gtk 2.20+を使用するgladeベースのUIの場合、ウィジェット名はUI定義の属性に格納されるため、gtk.Buildable.get_name()代わりにメソッドを使用する必要があります。gtk.Widget.get_name()id

于 2012-06-25T15:05:55.690 に答える