【问题标题】:Could not convert string to float from tkinter field无法从 tkinter 字段将字符串转换为浮点数
【发布时间】:2019-01-11 10:56:12
【问题描述】:

不断弹出说

File "script1.py", line 6, in conversion
    weight = float(e1_value.get()) * 1000
ValueError: could not convert string to float:

当我运行我的代码时,有什么想法吗?

找不到任何空格或任何东西来告诉我为什么它不会转换输入。

from tkinter import *

window = Tk()

def conversion():
    weight = float(e1_value.get()) * 1000
    weight = float(e2_value.get()) * 2.20462
    weight = float(e3_value.get()) * 35.274
    t1.insert(END,weight)


e1_value = StringVar()
e1 = Entry(window, textvariable = e1_value)
e1.grid(row = 1, column = 0)

e2_value = StringVar()
e2 = Entry(window, textvariable = e2_value)
e2.grid(row = 1, column = 1)

e3_value = StringVar()
e3 = Entry(window, textvariable = e3_value)
e3.grid(row = 1, column = 2)

b1 = Button(window, text = 'Convert', command = conversion)
b1.grid(row = 0, column = 2)

t1 = Text(window, height = 1, width = 20)
t1.grid(row = 0, column = 1)

window.mainloop()

应该希望将转换后的重量输出到三个单独的框中。

【问题讨论】:

  • 它没有告诉你它在抱怨哪一行代码吗?
  • 请显示完整和准确的错误信息。
  • 您也应该复制/粘贴您的输入。也许是使用语言环境和逗号与点作为小数分隔符的事情。
  • 添加完整的错误信息谢谢
  • 您的代码正在从 e1、e2、e3 中获取 3 个单独的值并进行转换?尽管在转换函数的每一行中,您都覆盖了权重。因此,如果您在 3 个单独的框中输入值并单击转换,您将看到它在单个框中为您提供了一个数字。

标签: python-3.x tkinter


【解决方案1】:

您没有提供输入,但您的错误表明第一个字段为空。如果您填写所有 3 个输入,您的代码可以正常工作。问题是你

def conversion():
    weight = float(e1_value.get()) * 1000
    weight = float(e2_value.get()) * 2.20462
    weight = float(e3_value.get()) * 35.274
    t1.insert(END,weight)

所以当convert 被击中时 - 您尝试将所有三个输入字段转换为浮动,无论是否有人在那里键入。你在e1 上得到一个错误 - 用一个数字填写它,然后在 e2 上得到一个错误,填写它 - 你猜对了 - 你会在 e3 上得到一个错误。一种可能的处理方法:

from tkinter import messagebox  
def conversion():
    try:
        weight = float(e1_value.get()) * 1000
        weight = float(e2_value.get()) * 2.20462
        weight = float(e3_value.get()) * 35.274
        t1.insert(END,weight)
    except ValueError:
        messagebox.showerror("What the hell?","Please type a valid number in all three fields!")
    except Exception as e:
        messagebox.showerror("Oh no!","Got some other weird error:\n"+str(e))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多