我想制作一个按钮,其中' 2'是写的....现在当任何人点击它时,它会显示数字' 2'在输入框中...... 错误是: 在点击之前,它已经显示了' 2'在输入框中
所以请帮我删除此错误 这是我的程序
from tkinter import *
root = Tk()
def add(x):
e1=Entry(root)
e1.insert(INSERT, x)
e1.pack()
a=Button(root, text='2', command=add(2))
a.pack()
root.mainloop()
答案 0 :(得分:2)
传递一个函数(在以下代码中使用lambda
)而不是函数的返回值。
from tkinter import *
root = Tk()
e1 = Entry(root)
e1.pack()
def add(x):
e1.insert(INSERT, x)
a = Button(root, text='2', command=lambda: add(2))
a.pack()
root.mainloop()
除此之外,从add
函数中提取条目创建代码。否则,每次单击按钮时都会创建条目。
答案 1 :(得分:1)
当你这样做时:
a=Button(root, text='2', command=add(2))
它与:
相同add(2)
a=Button(root, text='2', command=None)
即。您正在呼叫add
并将其return
值分配给command
。相反,您可以使用functools.partial
创建一个函数,使用参数add
调用2
:
from functools import partial
a=Button(root, text='2', command=partial(add, 2))