ValueError:使用tkinter时,以10为基数的int()的文本无效:“”

2024-10-02 22:37:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用Tkinter编程GUI,将连接到数据库(MySQL)所需的信息放入其中,但我遇到了这个问题

ValueError:基数为10的int()的文本无效:“”

这就是GUI的外观

enter image description here

这是按钮的功能

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: ''

有人知道如何解决这个问题吗


Tags: txthostgetportconnectguipassworddatabase
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?

我认为这是一致的

puerto = int( txt_puerto.get() )

返回的值txt_.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))

相关问题 更多 >