我得到的错误代码是;
line 83, in qu2
wins = float(wins)
ValueError: could not convert string to float:
这是错误出现在
中的代码 wins = wins_box.get()
draws = draws_box.get()
loses = losses_box.get()
wins = float(wins)
draws = float(draws)
loses = float(loses)
total_score = 0
total_score = total_score + wins * 3
total_score = total_score + draws * 2
total_score = total_score + loses
yourvar = tkinter.StringVar()
yourvar.set(total_score)
totalscore1 = tkinter.Label(q3, textvariable=yourvar)
totalscore1.pack()
感谢任何帮助,谢谢。
答案 0 :(得分:1)
您正在尝试转换字符串""进入一个浮子。 ""作为一个浮点数没有意义,所以你必须做以下其中一个。
1使用有意义的字符串填充字段作为浮点数。例如" 0"。
2设置默认值。以下代码集获胜为浮动值wins或0.0如果不适用。
try:
wins = float(wins)
except:
wins = 0.0
3指定""转换为0.0:
if wins == "":
wins = 0.0
else:
wins = float(wins)
答案 1 :(得分:0)
我认为你在错误的地方使用它 - 直接在你创建Entry
之后。但是Entry()
不是input()
,它不会等到你输入文本,所以在你输入文本之前执行Entry
之后的每个命令。它们甚至在窗口打开之前就被执行了。 Entry()
仅通知tkinter
您希望在窗口中使用哪个元素。 mainloop()
将完成所有工作(它打开窗口,将窗口小部件放在窗口中,获取键/鼠事件,将它们发送到窗口小部件,(重新)绘制窗口小部件等,然后返回到获取事件等。)< / p>
您可以将代码的功能分配给Button
,并在点击后执行(在Entry
中放入代码后)
示例:
import tkinter as tk
# --- functions ---
def callback():
text = e.get()
try:
value = float(text)
l['text'] = 'square: ' + str(value**2)
except Exception as ex:
l['text'] = 'wrong float: ' + text
# --- main ---
root = tk.Tk()
e = tk.Entry(root)
e.pack()
b = tk.Button(root, text='CALC SQUARE', command=callback)
b.pack()
l = tk.Label(root, text='here you will see result')
l.pack()
root.mainloop()
答案 2 :(得分:-1)
为什么不使用DoubleVar
?
这样您就不必将值转换为float
>>> yourvar = tkinter.DoubleVar()
>>> yourvar.set(5.0)
>>> yourvar.get()
5.0