按下时创建一个按钮在python 3.3的输入框中打印该按钮上的数字

时间:2014-05-29 14:45:14

标签: python windows python-3.x windows-8 tkinter

我想制作一个按钮,其中' 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()

2 个答案:

答案 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))