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)
答案 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()
来获取小部件中的文本。