Python 制作F>;带gui的摄氏度转换器(tkinter)

Python 制作F>;带gui的摄氏度转换器(tkinter),python,string,tkinter,Python,String,Tkinter,我正在尝试用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: 有什么

我正在尝试用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() 
#-编码:UTF-8-*-
进口Tkinter
导入tkMessageBox
main_window=Tkinter.Tk()
顶部框架=Tkinter.frame(主窗口)#i parantes,skriver var frame n ska vara
底部框架=Tkinter.frame(主窗口)#i parantes,dvs底部框架ska va inne i主窗口
inputLabel=Tkinter.Label(主窗口,text='Skriv antal grader=>',font=('helvetica',14))
inpuntery=Tkinter.Entry(主窗口,宽度=5,bg='white',字体=('helvetica',14))
infoLabel=Tkinter.Label(主窗口,高度=5,宽度=40,text='Välkommen till temperatureomvandlaren!\n'\
“内丹·杜乌姆凡德拉(Nedan kan du omvandla\nFahrenheit to Celsius)”,字体=(“helvetica”,14),背景=“#00CC33”,前景=”白色“)
def main():
设置窗口()
计数()
Tkinter.mainloop()
def setupWindow():
主窗口标题('TemperatureKonVerteraren')
主窗口几何(“380x300+500+250”)
infoLabel=Tkinter.Label(顶部框架,text=“Här berättas värdet”)
按钮(主窗口,宽度=8,text=“Konvertera”,font=('helvetica',10),bg=“grey”,command=count)。网格(行=3,列=6,pady=12)
顶部框架包()
底部框架包()
infoLabel.pack()
inpuntry.pack()
def count():
fahrenheit=float(inpuntery.get())#Hämtar输入angivet av användaren。
摄氏=(华氏-32)*5/9
如果摄氏度>0:Metod för hantering av färg och värden。
infoLabel.configure(bg='#CC0000',text='Det blir%.2f分级器摄氏度'.%(摄氏度,))
elif摄氏度<0:
infoLabel.configure(bg='#3366CC',text='Det blir%.2f分级器摄氏度'.%(摄氏度,))
其他:
infoLabel.configure(bg='#00CC33',text='Det blir%.2f分级器摄氏度'.%(摄氏度,))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()

问题是您在条目中没有值的情况下调用
fahrenheit=float(inpuntery.get())
。在
main
中初始化GUI,但在调用count之后,当然门槛没有值!您应该在用户实际在
inpuntery
中输入内容之后更改代码和调用计数,并在尝试将其转换为float之前验证用户的值

您可以这样做:

val = inputEntry.get()
if not val:
    val = 0.0
fahrenheit = float(val)

这是一个非常基本的检查,因为用户可以输入类似于
'10F'
的内容,但不能转换为浮点。

第31行大概是
摄氏=(华氏-32)…
?如果不是,那么你真的应该指出第31行在哪里,因为我们不太擅长计数;该行为
fahrenheit=float(…
float
转换为
str
,或者更确切地说,
str
转换为
float
?测试…它是
无法将字符串转换为float
。编辑以包含正确的错误。@Dolcens您的意思是
无法将字符串转换为float
?@MarcB抱歉。是的,这是第31行。这是一行ys无法将字符串转换为float:fahrenheit=float(inpuntery.get())或使用
try/except
块。但是,这只解决了部分问题。当我尝试时,GUI根本不会显示。是的,这将是一种更好的方法。是的,代码中似乎还有其他问题。