单击按钮时如何将文本插入到输入框中

时间:2013-10-09 17:40:18

标签: python python-2.7 tkinter

任何人都可以帮助我吗?

from Tkinter import *
import easygui

def whenoneclick():
    #How do I insert "1" into the Entry Label (inputbox)?


def mainfunc():
    inputvalue = inputvar.get()
    outputvalue = eval(inputvalue)

easygui.msgbox("The answer is: " + str(outputvalue), title="Answer")



maingui = Tk()


inputvar = StringVar()

inputbox = Entry(maingui, textvariable=inputvar).place(x=10,y=10)
inputbut = Button(text="=",command=mainfunc).place(x=10,y=40)

button = Button(text="1",command=whenoneclick).pack()

请回复。

2 个答案:

答案 0 :(得分:2)

嗯,首先,您需要让inputbox引用条目框本身,而不是place方法的返回值(None)。这可以通过如下代码来完成:

inputbox = Entry(maingui, textvariable=inputvar)
inputbox.place(x=10,y=10)

完成此操作后,您可以使用输入框的insert方法。我写了一个简单的脚本来演示:

from Tkinter import *

root = Tk()

def click():
    inputbox.insert(0, "1")

inputbox = Entry()
inputbox.place(x=10,y=10)

Button(text="Click",command=click).place(x=10,y=40)

root.mainloop()

如果要删除文本,可以使用delete方法:

inputbox.delete(0, END)

答案 1 :(得分:0)

如果您根据代码使用StringVar,则设置值

def whenoneclick():
    inputvar.set("1")  ## "1" not 1 because it is a StringVar

请注意,您在此处重新定义,但它是mainfunc函数的本地函数

def mainfunc():
    inputvalue = inputvar.get()

此外,程序中没有主循环,“outputvalue”是函数的本地函数,因此您将在easygui.msgbox上出错,或者缩进该行以使其成为函数的一部分。