python-3.x - 在 tkinter 窗口中显示标签后,我无法弄清楚如何重置标签
问题描述
我正在尝试制作一个计算器,整个事情几乎完成了,但是在显示答案后我希望它重置以便可以显示新的答案。否则只会是乱七八糟的随机数。所以我基本上想知道是否有人知道某种可以在这里工作的重置命令。更多的英特尔在代码本身(又名什么标签)。这是代码:
import time
from tkinter import *
#This is where "Svar" or in English "answer" is being defined.
def Kalk(event):
if operator.get() == "+":
global Svar
Svar = int(Nummer_1.get()) + int(Nummer_2.get())
Answer(event)
elif operator.get() == "-":
Svar = int(Nummer_1.get()) - int(Nummer_2.get())
Answer(event)
elif operator.get() == "*":
Svar = int(Nummer_1.get()) * int(Nummer_2.get())
Answer(event)
elif operator.get() == "/":
Svar = int(Nummer_1.get()) / int(Nummer_2.get())
Answer(event)
else:
Svar = ("Vennligst velg et av alternativene overfor")
Answer(event)
#This is where it displays "Svar" which is "answer".
def Answer(event):
#I want this label("Label_4") to be reset so when I run this def again the numbers won't stack
label_4 = Label(topFrame, text=Svar)
label_4.grid(row=6)
print(Svar)
kalkis = Tk()
kalkis.geometry("300x250")
kalkis.title("Kalkulator")
topFrame = Frame(kalkis)
topFrame.grid(row=0)
label = Label(topFrame, text="Du kan velge mellom '+', '-', '*'. '/' ")
label.grid(row=0)
operator = Entry(topFrame)
operator.grid(row=1)
label_2 = Label(topFrame, text="Skriv inn hvilket tall du vil bruke ")
label_2.grid(row=2)
Nummer_1 = Entry(topFrame)
#Nummer_1 = int(answer.get())
Nummer_1.grid(row=3)
Label_3 = Label(topFrame, text="Skriv inn ditt andre tall ")
Label_3.grid(row=4)
Nummer_2 = Entry(topFrame)
#Nummer_2 = int(answer.get())
Nummer_2.grid(row=5)
#Nummer_2.bind("<Return>", Kalk())
Refresh = Button(topFrame, text="Enter", command=kalkis)
Refresh.bind("<Enter>", Kalk)
Refresh.grid(row=6, column=1, sticky=W)
#Refresh.bind("<Return>", Kalk())
kalkis.mainloop()
解决方案
更改 a 的一种简单方法Label()
是将其与 type 的 textvariable 相关联StringVar()
。对 textvariable 的任何更新都将传播到标签。例如。
display_text = StringVar()
label_4 = Label(topFrame, textvariable=display_text)
该函数Answer()
每次调用时都会创建一个新标签。相反,只需创建一次标签,然后为每次计算更新文本变量。
import time
from tkinter import *
#This is where "Svar" or in English "answer" is being defined.
def Kalk(event):
if operator.get() == "+":
Svar = int(Nummer_1.get()) + int(Nummer_2.get())
display_text.set(str(Svar)) # Update textvariable
elif operator.get() == "-":
Svar = int(Nummer_1.get()) - int(Nummer_2.get())
display_text.set(str(Svar)) # Update textvariable
elif operator.get() == "*":
Svar = int(Nummer_1.get()) * int(Nummer_2.get())
display_text.set(str(Svar)) # Update textvariable
elif operator.get() == "/":
Svar = int(Nummer_1.get()) / int(Nummer_2.get())
display_text.set(str(Svar)) # Update textvariable
else:
Svar = ("Vennligst velg et av alternativene overfor")
display_text.set(Svar) # Update textvariable
kalkis = Tk()
kalkis.geometry("300x250")
kalkis.title("Kalkulator")
topFrame = Frame(kalkis)
topFrame.grid(row=0)
label = Label(topFrame, text="Du kan velge mellom '+', '-', '*'. '/' ")
label.grid(row=0)
operator = Entry(topFrame)
operator.grid(row=1)
label_2 = Label(topFrame, text="Skriv inn hvilket tall du vil bruke ")
label_2.grid(row=2)
Nummer_1 = Entry(topFrame)
Nummer_1.grid(row=3)
Label_3 = Label(topFrame, text="Skriv inn ditt andre tall ")
Label_3.grid(row=4)
Nummer_2 = Entry(topFrame)
Nummer_2.grid(row=5)
# This is where it displays "Svar" which is "answer".
display_text = StringVar() # Create a StringVar() to hold the result
label_4 = Label(topFrame, textvariable=display_text) # Associate to label
label_4.grid(row=6)
Refresh = Button(topFrame, text="Enter", command=kalkis)
Refresh.bind("<Enter>", Kalk)
Refresh.grid(row=6, column=1, sticky=W)
kalkis.mainloop()
推荐阅读
- mysql - 在气流和 mysql 数据库后端之间建立 SSL 连接时遇到错误
- html - 如何让 HTML 中的图片上传比例为 1:1
- firebase - 生成私钥失败。请在几分钟后再试一次。Firebase 不会为项目生成新的私钥
- swift - 嵌入式 tableview 的故事板背景颜色属性不起作用?
- python - 将numpy数组的索引映射到展平向量中的相应索引的公式?
- reactjs - 如何通过眼键在多个字段中应用相同的效果?
- r - 在 R 中,我如何在属性中设置命名向量的名称
- reactjs - 对 useNavigation vs Context 感到困惑
- javascript - 使用 vue js 过滤数据
- python-3.x - 值错误:无法从 Python 中的重复轴重新索引