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

如果您想将操作结果显示为标签的文本,只需创建一个新标签并将其配置为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 回答
0

要将条目文本添加到小部件,请使用insert方法。要替换当前文本,您可以delete在插入新文本之前调用。

e = Entry(master)
e.pack()

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

delete方法中的第一个参数是要删除的数字字符,第二个参数也是删除的位置。请注意ENDtkinter 变量如何。

insert函数的参数也是插入文本的位置,第二个参数是插入的内容。

将来,我建议您去Effbot并阅读有关您尝试使用的小部件以了解它的所有信息。

于 2013-07-20T14:59:03.017 回答