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

时间:2013-12-20 16:08:32

标签: 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: 

有什么想法吗?

到目前为止,这是我的代码:

#- 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() 

1 个答案:

答案 0 :(得分:2)

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

你可以这样做:

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

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