<p>这是我从上面开始的程序的最终源代码。在</p>
<pre><code>from tkinter import *
gui = Tk()
gui.title(string='Temperature Converter')
#create the GUI
fromUnit = StringVar()
#variable which holds the value of which unit is active in "units1"
toUnit = StringVar()
#variable which holds the value of which unit is active in "units2"
initialTemp = StringVar()
#set the initial temperature to 0
convertedTemp = StringVar()
#used to display the converted temperature through "displayTemp"
convertedTemp.set('0')
#set the converted temperature to 0
units1 = ('Celsius', 'Fahrenheit', 'Kelvin') #the units used in the OptionMenu
units2 = ('Celsius', 'Fahrenheit', 'Kelvin')
fromUnit.set(units1[0]) #set the active element to the item in index[0] of units1
toUnit.set(units2[0]) #set the active element to the item in index[0] of units2
#main function
#contains the if statements which select which conversion to use
def convert_Temp():
currentTemp = float(initialTemp.get())
cu1 = fromUnit.get()
cu2 = toUnit.get()
if (cu1, cu2) == ('Celsius', 'Celsius'):
c_c()
elif (cu1, cu2) == ('Celsius', 'Kelvin'):
c_k()
elif (cu1, cu2) == ('Celsius', 'Fahrenheit'):
c_f()
elif (cu1, cu2) == ('Fahrenheit', 'Fahrenheit'):
f_f()
elif (cu1, cu2) == ('Fahrenheit', 'Celsius'):
f_c()
elif (cu1, cu2) == ('Fahrenheit', 'Kelvin'):
f_k()
elif (cu1, cu2) == ('Kelvin', 'Kelvin'):
k_k()
elif (cu1, cu2) == ('Kelvin', 'Celsius'):
k_c()
elif (cu1, cu2) == ('Kelvin', 'Fahrenheit'):
k_f()
else:
messagebox.showerror(title='ERROR', message='Error in the IF statements')
# celsius-celcius conversion
def c_c():
currentTemp = float(initialTemp.get())
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
# celsius-kelvin conversion
def c_k():
currentTemp = float(initialTemp.get())
currentTemp = (currentTemp + 273.15)
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
# celsius-fahrenheit conversion
def c_f():
currentTemp = float(initialTemp.get())
currentTemp = (currentTemp * (9/5))+32
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
#fahrenheit-fahrenheit conversion
def f_f():
currentTemp = float(initialTemp.get())
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
#fahrenheit-celsius conversion
def f_c():
currentTemp = float(initialTemp.get())
currentTemp = (currentTemp - 32)*(5/9)
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
#fahrenheit-kelvin conversion
def f_k():
currentTemp = float(initialTemp.get())
currentTemp = ((currentTemp - 32)*(5/9)+273.15)
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
#kelvin-kelvin conversion
def k_k():
currentTemp = float(initialTemp.get())
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
#kelvin-celsius conversion
def k_c():
currentTemp = float(initialTemp.get())
currentTemp = (currentTemp - 273.15)
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
#kelvin-fahrenheit conversion
def k_f():
currentTemp = float(initialTemp.get())
currentTemp = (((currentTemp - 273.15)*(9/5))+32)
currentTemp = round(currentTemp, 2)
convertedTemp.set(currentTemp)
gui.geometry('+100+100')
#set up the geometry
enterTemp = Entry(gui,textvariable=initialTemp,justify=RIGHT)
enterTemp.grid(row=0,column=0)
#Entry which receives the temperature to convert
convertFromUnit = OptionMenu(gui,fromUnit,*units1)
convertFromUnit.grid(row=0,column=1)
#Option Menu which selects which unit to convert from
displayTemp = Label(gui,textvariable=convertedTemp)
displayTemp.grid(row=1,column=0)
#Label which displays the temperature
#Takes text variable "convertTemp"
convertToUnit = OptionMenu(gui,toUnit,*units2)
convertToUnit.grid(row=1,column=1)
#Option Menu which selects which unit to convert to
convertButton = Button(gui,text='Convert',command=convert_Temp)
convertButton.grid(row=2,column=1)
#Button that starts the conversion
#Calls the main function "convert_Temp"
gui.mainloop()
#End of the main loop
</code></pre>