使按钮的命令导致按钮的文本被插入到条目中

Make a button's command cause the button's text to be inserted into an entry

我正在创建一系列按钮,每个按钮都有不同的文本。我想在单击按钮后检索其相应的文本并将该文本插入到条目中。我能得到的最好的是:

#!/usr/bin/env python
import tkinter as tk
from random import randint

root= tk.Tk()
entry= tk.Entry(root)
def callback():
    entry.insert(0, data)

for i in range(20):
    data= str(randint(0,100))
    button = tk.Button(root, text = data, command=callback).pack()
entry.pack()
root.mainloop()

这会导致将条目设置为最后一个按钮的文本。

你应该做两件事:

  1. 使您的 callback 函数接受将成为按钮文本的参数:

    def callback(text):
        entry.insert(0, text)
    
  2. 将每个按钮的 command 选项分配给 lambda function,将此文本发送到 callback:

    command=lambda data=data: callback(data)
    

完整代码如下所示:

import tkinter as tk
from random import randint

root= tk.Tk()
entry= tk.Entry(root)
def callback(text):
    entry.insert(0, text)

for i in range(20):
    data= str(randint(0,100))
    tk.Button(root, text=data, command=lambda data=data: callback(data)).pack()
entry.pack()
root.mainloop()