0

谁能帮我?

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

请回复。

4

2 回答 2

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)
于 2013-10-09T19:19:15.320 回答
0

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

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

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

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

此外,您的程序中没有主循环,并且“输出值”是函数的本地变量,因此您将在 easygui.msgbox 上收到错误,或者缩进该行使其成为函数的一部分。

于 2013-10-09T23:16:04.997 回答