【发布时间】:2021-04-03 14:17:59
【问题描述】:
我所做的一切似乎都不起作用。我点击了关于该主题的 10 个链接,但没有任何东西可以解决我的问题。抱歉,代码太长了。
from tkinter import *
numbers = {}
root = Tk()
root.title("Calculator")
display_numbers = Entry(root, width=30)
display_numbers.grid(column=0, row=0, columnspan=2)
def clicked_number(value):
print(value)
display_numbers.insert(len(display_numbers.get()), value)
def clicked_clear():
print("cleared")
display_numbers.delete(0, END)
def clicked_add():
print("added")
display_numbers.delete(0, END)
number = display_numbers.get()
numbers[len(numbers)] = number
def clicked_equals():
summed = 0
for number in numbers:
summed += str(numbers.get(number))
display_numbers.delete(0, END)
display_numbers.insert(0, summed)
button_1 = Button(root, text="1", padx=40, pady=30, command=lambda: clicked_number(1))
button_2 = Button(root, text="2", padx=40, pady=30, command=lambda: clicked_number(2))
button_3 = Button(root, text="3", padx=40, pady=30, command=lambda: clicked_number(3))
button_4 = Button(root, text="4", padx=40, pady=30, command=lambda: clicked_number(4))
button_5 = Button(root, text="5", padx=40, pady=30, command=lambda: clicked_number(5))
button_6 = Button(root, text="6", padx=40, pady=30, command=lambda: clicked_number(6))
button_7 = Button(root, text="7", padx=40, pady=30, command=lambda: clicked_number(7))
button_8 = Button(root, text="8", padx=40, pady=30, command=lambda: clicked_number(8))
button_9 = Button(root, text="9", padx=40, pady=30, command=lambda: clicked_number(9))
button_0 = Button(root, text="0", padx=40, pady=30, command=lambda: clicked_number(0))
button_clear = Button(root, text="Clear", padx=80, pady=30, command=clicked_clear)
button_add = Button(root, text="+", padx=40, pady=30, command=clicked_add)
button_equals = Button(root, text="=", padx=40, pady=30, command=clicked_equals)
button_7.grid(column=0, row=1)
button_8.grid(column=1, row=1)
button_9.grid(column=2, row=1)
button_4.grid(column=0, row=2)
button_5.grid(column=1, row=2)
button_6.grid(column=2, row=2)
button_1.grid(column=0, row=3)
button_2.grid(column=1, row=3)
button_3.grid(column=2, row=3)
button_0.grid(column=0, row=4)
button_clear.grid(column=1, row=4, columnspan=2)
button_add.grid(column=0, row=5)
button_equals.grid(column=1, row=5)
root.mainloop()
这是完整的错误信息:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\itsuw\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/Users/itsuw/PycharmProjects/tkintercalc/main.py", line 37, in clicked_equals
summed += str(numbers.get(number))
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
【问题讨论】:
-
从错误消息中很明显您传递了一个不正确的值;检查您传递 int 值或字符串值的所有位置,以确保这就是要传递的内容