将 Tkinter 输入框转换为字符串的解决方法
Workaround to convert Tkinter entry box to string
我正在创建一个预算应用程序,我 运行 进入 ValueError: invalid literal for int() with base 10: ''
。我知道你们中的很多人可能会评论说这个话题已经得到了回答,但我的情况还没有。我知道我不能将空字符串数据转换为整数,但是当涉及到 Tkinter 上的输入框时。在这种情况下,该值将由用户估算,但与此同时,框为空,直到用户输入响应。在某个时间点,代码在
month_amount
是局部变量。
然后我尝试将其设为全局变量,然后出现此错误。然后,当我将它切换回 calculate()
函数内的局部变量时,它给了我同样的错误。我最大的问题是我可以采取什么解决方法将输入框响应转换为 int()
数据?
我在下面添加了一段代码。
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 = tk.Entry(root, font=('Arial', 12, "bold"))
...
def calculate():
month = Month_entry.get()
try:
month_amount = int(month)
except ValueError:
report_error(f"month ('{month}') is not a valid number")
如果用户没有输入任何内容,另一个解决方案可能是将月份设置为默认值:
def calculate():
month = Month_entry.get()
if month == "":
month = 0
else:
month = int(month)
或者,您可能希望将两者结合起来,以便您可以在捕获错误的同时优雅地处理空字符串。
可以说,最好的解决方案是让您在用户输入时验证数据,并且仅在所有输入都具有有效数据时才启用调用 calculate
函数的按钮。
有关如何进行条目验证的示例,请参阅 Interactively validating Entry widget content in tkinter
我正在创建一个预算应用程序,我 运行 进入 ValueError: invalid literal for int() with base 10: ''
。我知道你们中的很多人可能会评论说这个话题已经得到了回答,但我的情况还没有。我知道我不能将空字符串数据转换为整数,但是当涉及到 Tkinter 上的输入框时。在这种情况下,该值将由用户估算,但与此同时,框为空,直到用户输入响应。在某个时间点,代码在
month_amount
是局部变量。
然后我尝试将其设为全局变量,然后出现此错误。然后,当我将它切换回 calculate()
函数内的局部变量时,它给了我同样的错误。我最大的问题是我可以采取什么解决方法将输入框响应转换为 int()
数据?
我在下面添加了一段代码。
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 = tk.Entry(root, font=('Arial', 12, "bold"))
...
def calculate():
month = Month_entry.get()
try:
month_amount = int(month)
except ValueError:
report_error(f"month ('{month}') is not a valid number")
如果用户没有输入任何内容,另一个解决方案可能是将月份设置为默认值:
def calculate():
month = Month_entry.get()
if month == "":
month = 0
else:
month = int(month)
或者,您可能希望将两者结合起来,以便您可以在捕获错误的同时优雅地处理空字符串。
可以说,最好的解决方案是让您在用户输入时验证数据,并且仅在所有输入都具有有效数据时才启用调用 calculate
函数的按钮。
有关如何进行条目验证的示例,请参阅 Interactively validating Entry widget content in tkinter