Python 3.3 GUI程序

时间:2013-12-05 19:11:55

标签: python user-interface tkinter python-3.3

Celsius to Fahrenheit--编写一个将摄氏温度转换为华氏温度的GUI程序。用户应该能够输入摄氏温度,单击按钮,然后查看等效的华氏温度。使用以下公式进行转换: F = 9 / 5C +32 F是华氏温度,C是摄氏温度。

这是我的代码,我得到的错误是“使用基数10的int()的无效文字:''”我需要帮助让它正确运行。

#import
#main function
from tkinter import *
def main():
    root=Tk()

    root.title("Some GUI")
    root.geometry("400x700")
    #someothersting=""
    someotherstring=""
#enter Celcius
    L1=Label(root,text="Enter a Celcius temperature.")
    E1=Entry(root,textvariable=someotherstring)
    somebutton=Button(root, text="Total", command=convert(someotherstring))

    somebutton.pack()
    E1.pack()
    L1.pack()
    root.mainloop()#main loop


#convert Celcius to Fahrenheit
def convert(somestring):
    thestring=""
    thestring=somestring
    cel=0
    far=0
    cel=int(thestring)
    far=(9/5*(cel))+32
    print(far)

2 个答案:

答案 0 :(得分:1)

你的主要问题是这一行;

somebutton=Button(root, text="Total", command=convert(someotherstring))

...将立即调用convert(someotherstring)并将结果分配给命令。由于某些字符串在到达此行时为空,因此无法转换该值并使程序失败。

如果您不想立即评估,而是按下按钮,则可以使用lambda作为命令;

somebutton=Button(root, text="Total", command=lambda: convert(E1.get()))

...这将完全消除someotherstring的使用,只需在点击按钮时调用转化为E1的内容。

答案 1 :(得分:0)

这可能是由于int("")

在main()中,执行

def main():
    # ...
    someotherstring = 0 # Since its trying to get int

或者你可以在convert()中检查它是否为空:

def convert(somestring):
    if somestring != "":    
        # cel=0 dont need these in python
        # far=0
        cel=int(somestring)
        far=(9/5*(cel))+32
        print(far)

注意:检查someotherstring小部件是否正确使用Entry。我相信您应该使用StringVar()并执行stringvar.get()来获取小部件中的文本。