【发布时间】:2021-08-06 22:27:33
【问题描述】:
我正在创建预算应用程序,我遇到了ValueError: invalid literal for int() with base 10: ''。我知道你们中的很多人可能会评论说这个帖子已经得到了回答,但在我的情况下没有。我知道我不能将空字符串数据转换为整数,但是当涉及到 Tkinter 上的输入框时。在这种情况下,该值将由用户估算,但与此同时,在用户输入响应之前,这些框是空的。在某个时间点,代码在
month_amount 是一个局部变量。
然后我尝试将其设为全局变量,然后出现此错误。然后,当我将它切换回 calculate() 函数内的局部变量时,它给了我同样的错误。我最大的问题是将输入框响应转换为int() 数据的解决方法是什么?
我在下面的代码中添加了一个 sn-p。
Month_entry = tk.Entry(root, font=('Arial', 12, "bold"))
Month_entry.grid(row=5, column=1, columnspan=1)
Month_entry.configure(width=68)
Month_entry.place(x=0, y=120)
def calculate():
month_amount = int(Month_entry.get())
ValueError: invalid literal for int() with base 10: ''
【问题讨论】:
-
将
Month_entry.get()的结果保存在一个变量中。然后使用if语句检查它是否为空字符串。如果不是,您可以尝试在其上使用int()。 -
在用户在所有条目中输入内容之前,您不应该调用
calculate()。您是否有一个带有command=calculate()的按钮(它调用函数立即,而不是等待按钮被点击)而不是command=calculate? -
您能否详细说明一下,谢谢?你的意思是让month_amount = Month_entry.get()?我会用 if 语句做什么,这正是我主要困惑的地方。
-
我不明白你在问什么。您似乎知道无法将空字符串转换为整数,那么为什么不检查输入字符串或捕获错误呢?您的代码负责清理用户输入。
-
我确实有一个立即调用该函数的计算按钮。我会调整它,看看我是否得到同样的错误。
标签: python python-3.x tkinter tkinter-entry