有没有办法用小部件存储自定义信息?
例如,假设我有一个包含20个网址的列表。
我创建了20个按钮,每个按钮一个。
我想这样做,当我点击按钮时,会打开一个网址。但我需要一种方法来知道哪个按钮链接到哪个url,所以当按钮被clciked时,我可以将url传递给事件处理函数来打开它。
我想要实现此目的的另一个解决方案是创建一个扩展Gtk.Button类的自定义类,如此
class MyButton(Gtk.Button)
def __init__(self, url):
Gtk.Button.__init__(self)
self.url = url
...
然后我可以简单地执行button = MyButton(url)
但这看起来有点矫枉过正。所以我想知道我是否可以在窗口小部件上存储自定义信息。
答案 0 :(得分: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)