在按下时创build一个button,在python 3.3的input框中打印该button上的数字

我想制作一个button,上面写着'2'….现在当任何人点击它时,它将在input框中显示数字'2'…错误是:在点击之前,它已经显示' 2“在input框中

所以请帮我删除这个错误这里是我的程序

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

Solutions Collecting From Web of "在按下时创build一个button,在python 3.3的input框中打印该button上的数字"

传递函数(在下面的代码中使用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函数中提取入口创建代码。 否则,每次单击按钮时都会创建条目。

当你这样做时:

 a=Button(root, text='2', command=add(2)) 

它是一样的:

 add(2) a=Button(root, text='2', command=None) 

即你正在调用add和分配它的return值给command 。 相反,你可以使用functools.partial创建一个函数,用参数2调用add

 from functools import partial a=Button(root, text='2', command=partial(add, 2))