ValueError: int() 以 10 为基数的无效文字:'' 使用 tkinter
Posted
技术标签:
【中文标题】ValueError: int() 以 10 为基数的无效文字:\'\' 使用 tkinter【英文标题】:ValueError: invalid literal for int() with base 10: '' Using tkinterValueError: int() 以 10 为基数的无效文字:'' 使用 tkinter 【发布时间】:2021-03-14 11:32:42 【问题描述】:我一直在用 Tkinter 编写一个 GUI 来将连接所需的信息放入数据库 (mysql),但我遇到了这个问题
ValueError: int() 以 10 为底的无效文字:''
这就是 GUI 的样子
这是按钮的功能
def connect_bd():
list = []
user = txt_user.get()
password = txt_pass.get()
host = txt_host.get()
port = int(txt_port.get())
database = txt_database.get()
list.append(user)
list.append(password)
list.append(host)
list.append(port)
list.append(txt_database)
return list
剩下的就这些了
bdEntry = connect_bd()
mydb = mysql.connector.connect(
user = bdEntry[0],
password = bdEntry[1],
host = bdEntry[2],
port = bdEntry[3],
database = bdEntry[4]
)
函数中出现三个错误:
File "BuscarBD - copia.py", line 140, in <module>
bdEntry = connect_bd()
File "BuscarBD - copia.py", line 92, in connect_bd
puerto = int(txt_port.get())
ValueError: invalid literal for int() with base 10: ''
有人知道怎么解决吗?
【问题讨论】:
问题只是你试图将一个空字符串转换为一个整数。这通常是因为您在用户有机会输入任何数据之前调用了代码。您的错误消息显示设置puerto
但您没有提供执行此操作的代码。请提供minimal reproducible example,说明如何以及何时触发导致错误的代码。
【参考方案1】:
我觉得这样
puerto = int(txt_puerto.get())
txt_puerto.get() 返回的值是十进制字符串。例如:
>>> int('12.8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12.8'
你需要做的就是返回
>>> int(float(12.8))
【讨论】:
我猜这是因为,当代码运行时, tkinter.mainloop() 会像('')
一样放置一个空值。我实际上不知道这是否可以成为其中的一部分
@AlvaroNuñezMendoza 您应该尝试打印输出并找出导致错误的代码部分
根据问题中的错误信息,txt_puerto.get()
正在返回一个空字符串,而不是一个浮点数。【参考方案2】:
你需要围绕端口转换为int编写保护代码
try:
port = int(txt_port.get())
except ValueError:
pass
# Your logic goes here - what do you want to do if we dont have an int?
【讨论】:
还是不行,我猜我会用 PyQt5 作为 GUI,不过谢谢你的帮助! 不确定我理解“仍然无法正常工作”是什么意思。 即使使用try except
也有其他问题,使用tkinter.mainloop()
。当 mainloop() 结束时,我不知道为什么,函数的值停留在 0以上是关于ValueError: int() 以 10 为基数的无效文字:'' 使用 tkinter的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:int() 的无效文字,以 10 为底错误
ValueError: int() 以 10 为基数的无效文字:''
Django - ValueError: int() 以 10 为基数的无效文字:''
ValueError: int() 以 10 为底的无效文字:'10025.0'