gpt4 book ai didi

python - 为什么按下 "Reset"按钮后无法清除标签?

转载 作者:行者123 更新时间:2023-12-01 04:03:54 25 4
gpt4 key购买 nike

我正在制作一个程序,将公里转换为英里,将英里转换为公里。当显示值时,我希望有一个重置按钮来重置值和用户编号的数字。

我可以输入要清除的数字,但不能输入标签(finalKilo、finalMile)。有什么建议吗?

此外,是否有其他方法可以在不使用标签的情况下显示计算值?

from tkinter import *

def closeWin():
myGui.destroy() #Close Window Function

def kiloFunc():
myText = kiloMent.get() #Kilometers to Miles Fuction
convert = 0.62
miles = myText * convert
finalKilo = Label(text = miles,fg='red',justify='center').place(x=200,y=80)


def mileFunc():
myText2 = mileMent.get() #Miles to Kilometers Function
convertTwo = myText2 // 0.62
finalMile = Label(text = convertTwo, fg = 'red',justify='center').place(x=200,y=170)


def reset_values():
kiloMent.set(0)
mileMent.set(0) #Resets the Data
finalKilo.set("")
finalMile.set("")



#The GUI


myGui = Tk()

kiloMent = IntVar()
mileMent = IntVar()

myGui.title("Distance Converter")
myGui.geometry("450x200+500+200")

myLabel = Label(text="Welcome! Please enter your value then choose your option:",fg="blue",justify='center')
myLabel.pack()

kiloEntry = Entry(myGui, textvariable = kiloMent,justify='center').pack()

kilo2milesButton = Button(text = "Kilometers to Miles!", command = kiloFunc).pack()

mileEntry = Entry(myGui, textvariable = mileMent,justify='center').place(x=130,y=105)

miles2kiloButton = Button(text = "Miles to Kilometers!", command = mileFunc).place(x=150,y=135)

reset = Button(text = "Reset Values!", command = reset_values).place(x=10,y=165)

quit = Button(text="Quit", command = closeWin).place(x=385,y=165)

myGui.mainloop()

最佳答案

Callidior 是正确的,但有多个错误:)

我已经调整了代码,将其放入一个类中,现在它应该可以工作了。

现在,当它尝试更改标签时,它引用实际变量(miles 和 ConvertTwo)。您提到了标签本身。在这种情况下,您可能应该这样做:

finalKilo.config(text = "")
finalMile.config(text = "")

另一个问题是您仅在给出条目后才定义标签,而在重置中则重置了两者。因此,如果第一次只给出一个条目并推送重置,则会弹出错误,指出其中一个标签未定义/无。

下面的代码应该可以工作。

from Tkinter import *

class hisGui:

def __init__(self):
self.myGui = Tk()

self.kiloMent = IntVar()
self.mileMent = IntVar()


self.myGui.title("Distance Converter")
self.myGui.geometry("450x200+500+200")

myLabel = Label(text="Welcome! Please enter your value then choose your option:",fg="blue",justify='center')
myLabel.pack()

self.miles = StringVar()
self.convertTwo = StringVar()
self.finalKilo = Label(textvariable = self.miles,fg='red',justify='center').place(x=200,y=80)
self.finalMile = Label(textvariable = self.convertTwo, fg = 'red',justify='center').place(x=200,y=170)

kiloEntry = Entry(self.myGui, textvariable = self.kiloMent,justify='center').pack()

kilo2milesButton = Button(text = "Kilometers to Miles!", command = self.kiloFunc).pack()

mileEntry = Entry(self.myGui, textvariable = self.mileMent,justify='center').place(x=130,y=105)

miles2kiloButton = Button(text = "Miles to Kilometers!", command = self.mileFunc).place(x=150,y=135)

reset = Button(text = "Reset Values!", command = self.reset_values).place(x=10,y=165)

quit = Button(text="Quit", command = self.closeWin).place(x=385,y=165)

self.myGui.mainloop()

def closeWin(self):
self.myGui.destroy() #Close Window Function

def kiloFunc(self):
myText = self.kiloMent.get() #Kilometers to Miles Function
convert = 0.62
self.miles.set(myText * convert)

def mileFunc(self):
myText2 = self.mileMent.get() #Miles to Kilometers Function
self.convertTwo.set(myText2 // 0.62)

def reset_values(self):
self.kiloMent.set(0)
self.mileMent.set(0) #Resets the Data
self.miles.set("")
self.convertTwo.set("")

if __name__ == '__main__':
Gui = hisGui()

关于python - 为什么按下 "Reset"按钮后无法清除标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com