如何让tkinter按钮返回其文本值

2024-06-16 13:07:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这段代码,希望按钮在被点击时返回它的文本值。在

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()

Tags: pipofthe代码文本deitem按钮
2条回答

简单的方法是将item字符串传递给command回调,但必须小心操作。一种方法是使item字符串成为lambda函数的默认参数。它必须是一个默认参数,以便在定义lambda时,item与该参数绑定。如果我们只是lambda : func(item),那么每个按钮都将打印列表中的最后一项。发生这种情况是因为在这种情况下,当调用回调时,Python会查找itemcurrent值。在

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()

注意在我的代码中我是如何做到的。。。做那个任务没有意义。首先,我们没有在任何地方保存这些小部件,但是更重要的是,.pack返回{},这样做

^{pr2}$

实际上,将button设置为None,而不是按钮小部件。在

您可以使用lambda with command将参数发送到“filmdatabase”:它应该如下所示:

for item in film:
    button = Button(master=aanbiederspage, text=item, command= lambda: filmdatabase(item)).pack()

相关问题 更多 >