0

最初は足し算/引き算だけの簡単なGUI電卓を作ろうとしています。結果をコンソールに出力できますが、たとえば名の入力ボックスのような入力ボックスに出力したいのですが、実行できません。助けていただければ本当にありがたいです。

from Tkinter import *
import tkMessageBox 
import sys
class scanner:
    list1 = []
    def __init__(self,parent):
        self.entrytext = StringVar()
        self.entrytext1 = StringVar()
        Label(root, text="first name", width=10).grid(row=0,column=0)
        Entry(root, textvariable=self.entrytext, width=10).grid(row=0,column=1)
        Label(root, text="last name", width=10).grid(row=1,column=0)
        Entry(root, textvariable=self.entrytext1, width=10).grid(row=1,column=1)
        Button(root, text="ADD", command=self.add).grid()
        Button(root, text="SUBTRACT", command=self.subtract).grid()

    def add(self):
        global a
        global b
        self.a=int(self.entrytext.get())
        self.b=int(self.entrytext1.get())
        print "result is", self.a+self.b

    def subtract(self):
        global a
        global b
        self.a=int(self.entrytext.get())
        self.b=int(self.entrytext1.get())
        print "result is", self.a-self.b


root= Tk()
root.geometry("300x300")
calc = scanner(root)
root.mainloop() 
4

2 に答える 2

0

エントリ テキストをウィジェットに追加するには、insertメソッドを使用します。現在のテキストを置き換えるにはdelete、新しいテキストを挿入する前に呼び出すことができます。

e = Entry(master)
e.pack()

e.delete(0, END)
e.insert(0, "a default value")

メソッドの最初のパラメーターはdelete削除する数字で、2 番目のパラメーターは削除する場所です。ENDtkinter 変数がどのようになっているかに注目してください。

関数のパラメーターinsertはテキストが挿入される場所でもあり、2 番目のパラメーターは挿入されるものです。

将来的には、Effbotにアクセスして、使用しようとしているウィジェットについて読んで、そのすべてを調べることをお勧めします。

于 2013-07-20T14:59:03.017 に答える
0

操作の結果をラベルのテキストとして表示する場合は、新しいラベルを作成し、textオプションと値として出力する文字列を使用して構成します。補足として、globalステートメントは必要ありません。また、インスタンス変数の使用も必要ありません。ただし、エントリの内容が実際に有効な数値であることを確認することは非常に重要です。

def __init__(self,parent):
    # ...
    self.result = Label(root, text='')
    self.result.grid(row=4, column=0)

def add(self):
    try:
        a = int(self.entrytext.get())
        b = int(self.entrytext1.get())
        self.result.config(text=str(a+b))
    except ValueError:
        print("Incorrect values")
于 2013-07-20T13:34:11.473 に答える