无法使用tkinter将字符串转换为float

时间:2017-12-02 15:11:08

标签: python tkinter

我得到的错误代码是;

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

感谢任何帮助,谢谢。

3 个答案:

答案 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