Python 如何为与以下代码相关的程序创建重置按钮?

Python 如何为与以下代码相关的程序创建重置按钮?,python,button,tkinter,reset,Python,Button,Tkinter,Reset,我正在尝试添加一个重置按钮,但似乎无法使其工作。我创建了一个main,以便在按下按钮但运气不佳时返回到它。有什么想法吗 import sys from tkinter import * import math def main(): def closeWin(): myGui.destroy() #Close Window Function def kiloFunc(): myText = kiloMent.

我正在尝试添加一个重置按钮,但似乎无法使其工作。我创建了一个main,以便在按下按钮但运气不佳时返回到它。有什么想法吗

import sys
from tkinter import *
import math

def main():
    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)

    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 = main).place(x=10,y=165)

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


    myGui.mainloop()

main()
通过再次调用
main()
,您只需创建GUI的另一个实例。您应该做的是(如果我理解正确的话),重置当前现有GUI的值。您可以使用GUI对象的
set()
方法

玩这个把戏

但是,更彻底地查看代码时,也存在一些其他问题。首先,我建议不要每次用户尝试转换值时都创建
标签。

此代码应该可以:

from tkinter import *

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

    def kiloFunc():
        finalKilo.set(kiloMent.get() * 0.62)  # Kilometers to Miles Fuction

    def mileFunc():
        finalMile.set(mileMent.get() // 0.62)  # Miles to Kilometers Function

    def clearFunc():
        kiloMent.set("0")
        mileMent.set("0")
        finalKilo.set("")
        finalMile.set("")

    myGui = Tk()

    kiloMent = IntVar()
    mileMent = IntVar()

    finalKilo = StringVar()
    finalMile = StringVar()

    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')
    kiloEntry.pack()

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

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

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

    kiloLabel = Label(textvariable=finalKilo, fg='red', justify='center')
    kiloLabel.place(x=200, y=80)

    mileLabel = Label(textvariable=finalMile, fg='red', justify='center')
    mileLabel.place(x=200, y=170)

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

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

    myGui.mainloop()

main()
除了Chuck提到的代码外,还有一些关于原始代码的注释:

  • math
    sys
    导入未使用
  • 您设置的变量等于
    widget.pack()
    widget.place()
    ,这是返回
    None
    的函数
    我不知道我怎么没想到!非常感谢。如果我不使用labelReturn none,关于如何显示信息,我还有哪些其他选项?很抱歉问了一个愚蠢的问题,我对python相当陌生。您能解释一下吗?
    myLabel=Label()
    是您想要做的,因为它将
    myLabel
    的值设置为
    Label
    小部件。但是
    myLabel=Label().pack()
    myLabel
    的值设置为
    None
    ,因为它等效于
    temp=Label();myLabel=temp.pack()
    pack()
    是一个返回值
    None
    的函数。
    from tkinter import *
    
    def main():
        def closeWin():
            myGui.destroy()  # Close Window Function
    
        def kiloFunc():
            finalKilo.set(kiloMent.get() * 0.62)  # Kilometers to Miles Fuction
    
        def mileFunc():
            finalMile.set(mileMent.get() // 0.62)  # Miles to Kilometers Function
    
        def clearFunc():
            kiloMent.set("0")
            mileMent.set("0")
            finalKilo.set("")
            finalMile.set("")
    
        myGui = Tk()
    
        kiloMent = IntVar()
        mileMent = IntVar()
    
        finalKilo = StringVar()
        finalMile = StringVar()
    
        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')
        kiloEntry.pack()
    
        kilo2milesButton = Button(text="Kilometers to Miles!", command=kiloFunc)
        kilo2milesButton.pack()
    
        mileEntry = Entry(myGui, textvariable=mileMent, justify='center')
        mileEntry.place(x=130, y=105)
    
        miles2kiloButton = Button(text="Miles to Kilometers!", command=mileFunc)
        miles2kiloButton.place(x=150, y=135)
    
        kiloLabel = Label(textvariable=finalKilo, fg='red', justify='center')
        kiloLabel.place(x=200, y=80)
    
        mileLabel = Label(textvariable=finalMile, fg='red', justify='center')
        mileLabel.place(x=200, y=170)
    
        reset = Button(text="Reset Values!", command=clearFunc)
        reset.place(x=10, y=165)
    
        quit = Button(text="Quit", command=closeWin)
        quit.place(x=385, y=165)
    
        myGui.mainloop()
    
    main()