【发布时间】:2021-11-11 11:34:08
【问题描述】:
我正在用 tkinter 做一个简单的计算器,计算部分很好。问题是计算后变量(答案)没有得到更新。
您可以在窗口中看到,结果标签是空的,因为它是初始值。 tkinter window
这是我使用的代码:
from tkinter import *
import tkinter.messagebox as messagebox
answer=""
root = Tk()
root.geometry("600x300")
root.title("Simple Calculator")
def calculate():
value_1 = value_1_entry.get()
operator = operator_entry.get()
value_2 = value_2_entry.get()
if operator=='+':
answer = float(value_1_entry.get()) + float(value_2_entry.get())
print(answer)
elif operator=='-':
answer = float(value_1_entry.get()) - float(value_2_entry.get())
print(answer)
return answer
##################Labels###############
value_1 = Label(root, text='Enter first value', font=('bold', 10))
value_1.place(x=20, y=30)
value_1_entry = Entry()
value_1_entry.place(x=150, y=30)
operator = Label(root, text='Enter the operator', font=('bold', 10))
operator.place(x=20, y=60)
operator_entry = Entry()
operator_entry.place(x=150, y=60)
value_2 = Label(root, text='Enter second value', font=('bold', 10))
value_2.place(x=20, y=90)
value_2_entry = Entry()
value_2_entry.place(x=150, y=90)
#################Results####################
result = Label(root, text='Result:', font=('bold', 10))
result.place(x=20, y=120)
result_ = Label(root, text=answer, font=('bold', 10))
result_.place(x=150, y=120)
##################Buttons###############
calculate = Button(root, text="calculate", font=("bold",10), bg="white", command=calculate)
calculate.place(x=70, y=140)
# Run
root.mainloop()
我不知道如何让 answer="" 在 tkinter 窗口、结果标签中更新为新答案。
【问题讨论】:
-
answer是一个全局变量,但是当您在calculate函数中执行answer = <something>时,您正在修改局部变量。请改用global answer来更新全局引用。