Python 制作F>;带gui的摄氏度转换器(tkinter)
我正在尝试用Tkinter构建一个简单的GUI,其功能应该是将华氏温度转换为摄氏温度。我真的很想找出下面的错误,但我一直在第31行的“无法将字符串转换为浮点”中出错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: 有什么
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根本不会显示。是的,这将是一种更好的方法。是的,代码中似乎还有其他问题。