1

有没有办法用小部件存储自定义信息?

例如,假设我有一个包含 20 个网址的列表。

我创建了 20 个按钮,每个 url 一个。

我想这样做,所以当我单击一个按钮时,会打开一个 url。但是我需要一种方法来知道哪个按钮链接到哪个 url,所以当按钮被点击时,我可以将 url 传递给事件处理函数来打开它。

我想到的另一个解决方案是创建一个扩展 Gtk.Button 类的自定义类,就像这样

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

然后我可以简单地做 button = MyButton(url)

但这似乎有点矫枉过正。所以我想知道我是否可以在小部件本身上存储自定义信息。

4

1 回答 1

3

最简单的解决方案是将 URL 添加为传递给clicked信号处理程序的附加数据:

# 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 回答