因此,我有这段代码,希望按钮在单击时返回其文本值。
film = ['Woezel & Pip Op zoek naar de Sloddervos!', 'The White Snake',
'Proof of Life', 'Rise of the Planet of the Apes',
'Mona Lisa Smile', '2 Guns', 'Max Payne', 'De eetclub']
for item in film:
button = Button(master=aanbiederspage, text=item,
command=filmdatabase).pack()
执行此操作的简单方法是将item
字符串传递给command
回调,但是您必须小心如何执行此操作。一种方法是使item
字符串成为lambda
函数的默认arg 。它必须是默认arg,以便item
在lambda
定义时绑定到该arg 。如果我们只是这样做,lambda : func(item)
那么每个按钮都会打印列表中的最后一项。发生这种情况是因为在那种情况下,Python会在调用回调时查找当前值item
。
import tkinter as tk
film = ['Woezel & Pip Op zoek naar de Sloddervos!', 'The White Snake',
'Proof of Life', 'Rise of the Planet of the Apes', 'Mona Lisa Smile',
'2 Guns', 'Max Payne', 'De eetclub']
def func(item):
print(item)
root = tk.Tk()
for item in film:
tk.Button(master=root, text=item, command=lambda s=item: func(s)).pack()
root.mainloop()
注意在我的代码中我是怎么做的button = tk.Button(
...进行分配是没有意义的。首先,我们不会将这些小部件保存在任何地方,更重要的是,.pack
return None
,因此
button = Button(master=aanbiederspage, text=item, command=filmdatabase).pack()
实际上设置button
为None
,而不是Button小部件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句