使按钮的命令导致按钮的文本被插入到条目中
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()
这会导致将条目设置为最后一个按钮的文本。
你应该做两件事:
使您的 callback
函数接受将成为按钮文本的参数:
def callback(text):
entry.insert(0, text)
将每个按钮的 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()
我正在创建一系列按钮,每个按钮都有不同的文本。我想在单击按钮后检索其相应的文本并将该文本插入到条目中。我能得到的最好的是:
#!/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()
这会导致将条目设置为最后一个按钮的文本。
你应该做两件事:
使您的
callback
函数接受将成为按钮文本的参数:def callback(text): entry.insert(0, text)
将每个按钮的
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()