Я пытаюсь использовать Tkinterface для создания простого калькулятора, который добавляет, вычитает, умножает и делит, но у меня есть проблема, когда я пытаюсь выполнить свою программу, я получаю эту ошибку:TypeError: неподдерживаемый тип операндов для +: 'instance' и 'instance' Python 2.7
TypeError: неподдерживаемый тип операнда (ы) для +: «например» и «например»
у меня лично не знаю, почему это происходит, я оглядывались вокруг и находили проблемы с похожими ошибками, но не с «экземпляром» и «экземпляром». Вот мой код:
#!/usr/bin/python2.7
#Imports necessary modules
from Tkinter import *
#import Tkinter.messagebox
import time as t
import os
#End of importing
#Defines interface
calc = Tk()
calc.title("GUI Calculator")
calc.geometry("500x350+200+200")
#End of interface definition
#Defines methods
def add(val1, val2):
global ans
ans = int(val1 + val2)
return ans
def sub(val1, val2):
global ans
ans = int(val1 - val2)
return ans
def mul(val1, val2):
global ans
ans = int(val1 * val2)
return ans
def div(val1, val2):
global ans
ans = float(val1 % val2)
return ans
#End of method defining
#Heading
but1Text = StringVar()
but1Text.set("Welcome to the GUI Calculator")
label1 = Label(calc, textvariable=but1Text, height=2)
label1.pack()
#Instruction 1
but2Text = StringVar()
but2Text.set("Enter value number one!")
label2 = Label(calc, textvariable=but2Text, height=2)
label2.pack()
#Val 1 input
num1 = IntVar()
val1 = Entry(calc, textvariable=num1)
val1.pack()
#Instruction 2
but3Text = StringVar()
but3Text.set("Enter value number one!")
label3 = Label(calc, textvariable=but2Text, height=2)
label3.pack()
#Val 2 input
num2 = IntVar()
val2 = Entry(calc, textvariable=num2)
val2.pack()
#Operation selector
but4Text = StringVar()
but4Text.set(None)
operator = Radiobutton(calc, text = "Addition", value = "Add", variable = but4Text,command = add(val1,val2)).pack()
operator = Radiobutton(calc, text = "Subtract", value = "Sub", variable = but4Text,command = sub(val1,val2)).pack()
operator = Radiobutton(calc, text = "Multiply", value = "Mul", variable = but4Text,command = mul(val1,val2)).pack()
operator = Radiobutton(calc, text = "Divide", value = "Div", variable = but4Text,command = div(val1,val2)).pack()
#Answer
but5Text = StringVar()
but5Text.set("Answer=")
label4 = Label(calc, textvariable=but5Text, height=2)
label4.pack()
#Answer
but6Text = StringVar()
but6Text.set(ans)
label5 = Label(calc, textvariable=but6Text, height=2)
label5.pack()
#Mainloop
calc.mainloop()
Вот полная ошибка:
Traceback (most recent call last):
File "./tkCalc.py", line 76, in <module>
operator = Radiobutton(calc, text = "Addition", value = "Add", variable = but4Text,command = add(val1,val2)).pack()
File "./tkCalc.py", line 24, in add
ans = int(val1 + val2)
TypeError: unsupported operand type(s) for +: 'instance' and 'instance'
Просьба предоставить полную информацию о трассировке – Totem
'val1' и' val2' являются объектами Entry. Почему вы ожидаете, что 'val1 + val2' будет работать? – user2357112
Я хочу, чтобы пользователь вводил 2 значения и использовал их в качестве чисел для калькулятора. – Hansmoehansen