我试图用Tkinter构建一个简单的GUI,该功能应该是从华氏温度转换为摄氏温度。我真的试图找出什么是错误的,但我一直在第31行“无法将字符串转换为浮动”。
File "test.py", line 31, in count
fahrenheit = float(inputEntry.get()) # Hämtar input angivet av användaren.
ValueError: could not convert string to float:
有什么想法吗?
到目前为止,这是我的代码:
#- coding: UTF-8 -*-
import Tkinter
import tkMessageBox
main_window = Tkinter.Tk()
top_frame = Tkinter.Frame(main_window) #i parantes, skriver var framen ska vara
bottom_frame = Tkinter.Frame(main_window) #i parantes, dvs bottom_frame ska va inne i main_window
inputLabel = Tkinter.Label(main_window, text='Skriv antal grader =>', font=('helvetica', 14))
inputEntry = Tkinter.Entry(main_window, width = 5, bg='white', font=('helvetica', 14))
infoLabel = Tkinter.Label(main_window, height = 5, width=40, text='Välkommen till Temperaturomvandlaren!\n' \
'Nedan kan du omvandla \nFahrenheit till Celsius.', font=('helvetica', 14), bg='#00CC33', fg='white')
def main():
setupWindow()
count()
Tkinter.mainloop()
def setupWindow():
main_window.title('Temperaturkonverteraren')
main_window.geometry('380x300+500+250')
infoLabel = Tkinter.Label(top_frame, text="Här berättas värdet")
Tkinter.Button(main_window, width = 8, text = "Konvertera", font=('helvetica', 10), bg = "grey",command = count).grid(row=3, column=6, pady=12)
top_frame.pack()
bottom_frame.pack()
infoLabel.pack()
inputEntry.pack()
def count():
fahrenheit = float(inputEntry.get()) # Hämtar input angivet av användaren.
celsius = (fahrenheit - 32) * 5 / 9
if celsius > 0: # Metod för hantering av färg och värden.
infoLabel.configure(bg='#CC0000', text='Det blir %.2f grader Celsius.' % (celsius,))
elif celsius < 0:
infoLabel.configure(bg='#3366CC', text='Det blir %.2f grader Celsius.' % (celsius,))
else:
infoLabel.configure(bg='#00CC33', text='Det blir %.2f grader Celsius.' % (celsius,))
if __name__ == '__main__':
main()
答案 0 :(得分:2)
问题是您在条目中没有值的情况下调用fahrenheit = float(inputEntry.get())
。在main
中,您可以在调用count之后初始化GUI,当然,条目没有值!您应该在用户实际输入inputEntry
中的内容之后更改您的代码和调用计数,并在尝试将其转换为浮动之前验证用户的值。
你可以这样做:
val = inputEntry.get()
if not val:
val = 0.0
fahrenheit = float(val)
这是一个非常基本的检查,因为用户可以输入类似'10F'
的内容,但无法转换为浮点数。