1

ウィジェットでカスタム情報を保存する方法はありますか?

たとえば、20 個の URL を含むリストがあるとします。

URLごとに1つずつ、合計20個のボタンを作成します。

ボタンをクリックするとURLが開くようにしたい。しかし、どのボタンがどの URL にリンクされているかを知る方法が必要なので、ボタンをクリックすると、その URL をイベント ハンドラ関数に渡して開くことができます。

これを達成するために私が考えた別の解決策は、Gtk.Button クラスを拡張するカスタム クラスを作成することでした。

class MyButton(Gtk.Button)
    def __init__(self, url):
        Gtk.Button.__init__(self)
        self.url = url
        ...

次に、単純にボタン = MyButton(url) を実行できます

しかし、これはやり過ぎのようです。ウィジェット自体にカスタム情報を保存できるかどうか疑問に思っています。

4

1 に答える 1

3

clicked最も簡単な解決策は、シグナル ハンドラーに渡される追加データとして URL を追加することです。

# handle_click will receive additional url arg along with the button
button.connect('clicked', handle_click, url)

PyGTK では、サブクラス化を行わなくても、ウィジェットに割り当てるだけで任意の属性をウィジェットに追加することもできます。

# handle_click will be called with button and can access button.url
button.url = url
button.connect('clicked', handle_click)
于 2012-11-14T07:30:01.180 に答える