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の戻り値 (つまり ) ではなく、エントリボックス自体を参照する必要があります。これは、次のようなコードを作成することで実行できます。placeNone

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 に答える