GUI中的基本计算器

时间:2018-07-13 14:01:54

标签: python-3.x user-interface tkinter

我正在尝试使用GUI创建基本计算器。但是我忍不住了。

错误是:"TypeError: unsupported operand type(s) for +: 'IntVar' and 'str'"

所有按钮都可以正常工作,只有'='可以解决问题。

请提供有关如何将StringVar转换为IntVar的想法。 这是我的代码:

import tkinter
window=tkinter.Tk()
def zero():
     x.set(x.get()+'0')
def one():
     x.set(x.get()+'1')
def two():
     x.set(x.get()+'2')
def three():
     x.set(x.get()+'3')
def four():
     x.set(x.get()+'4')
def five():
     x.set(x.get()+'5')
def six():
     x.set(x.get()+'6')
def seven():
     x.set(x.get()+'7')
def eight():
     x.set(x.get()+'8')
def nine():
     x.set(x.get()+'9')
def add():
     a=x.get()
     x.set('')
def ans():
     b=x.get()
     x.set(a+b)


frame=tkinter.Frame(window)
frame.pack()
x=tkinter.StringVar()
a=tkinter.IntVar()
b=tkinter.IntVar()

entry=tkinter.Entry(frame,textvariable=x)
entry.grid(row=0,column=0)
entry.pack

button0=tkinter.Button(frame,text='0',command=zero)
button0.grid(row=0,column=1)

button1=tkinter.Button(frame,text='1',command=one)
button1.grid(row=1,column=1)

button2=tkinter.Button(frame,text='2',command=two)
button2.grid(row=1,column=2)

button3=tkinter.Button(frame,text='3',command=three)
button3.grid(row=1,column=3)

button4=tkinter.Button(frame,text='4',command=four)
button4.grid(row=2,column=1)

button5=tkinter.Button(frame,text='5',command=five)
button5.grid(row=2,column=2)

button6=tkinter.Button(frame,text='6',command=six)
button6.grid(row=2,column=3)

button7=tkinter.Button(frame,text='7',command=seven)
button7.grid(row=3,column=1)

button8=tkinter.Button(frame,text='8',command=eight)
button8.grid(row=3,column=2)

button9=tkinter.Button(frame,text='9',command=nine)
button9.grid(row=3,column=3)

button9=tkinter.Button(frame,text='+',command=add)
button9.grid(row=0,column=2)

button10=tkinter.Button(frame,text='=',command=ans)
button10.grid(row=0,column=3)


window.mainloop()

2 个答案:

答案 0 :(得分:0)

addans函数中,您将ab用作变量,而不是IntVar。将它们更改为:

def add():
     a.set(x.get())
     x.set('')
def ans():
     b.set(x.get())
     x.set(a.get()+b.get())

答案 1 :(得分:-1)

您使用的字符串应使用数字(IntVar)。

使用数字

x=tkinter.IntVar()
a=tkinter.IntVar()
b=tkinter.IntVar()

尝试

x.set(x.get()+1)

[...]

def add():
     a=x.get()
     x.set(0)
def ans():
     b=x.get()
     x.set(a+b)

代替

x.set(x.get()+'1')