Python 如何消除此回溯错误:ValueError:invalid literal for int(),以10为基数:'';

Python 如何消除此回溯错误:ValueError:invalid literal for int(),以10为基数:'';,python,tkinter,tkinter-entry,traceback,Python,Tkinter,Tkinter Entry,Traceback,多亏了SyntaxVoid在评论中的作用,我解决了这个问题 我在tkinter中为计时器创建了一个条目,我希望该输入成为设置计时器时间的变量。我需要这个变量是一个整数而不是一个字符串,但是我得到了这个错误 我看过一些关于这方面的帖子,他们都说要创建一个变量,然后使用get(),然后将该变量设置为int,但这并不像您看到的那样有效 我相信这是所有的错误代码: t = Entry() t.pack() stringT = t.get() intT = int(stringT) 错误: Traceb

多亏了SyntaxVoid在评论中的作用,我解决了这个问题

我在
tkinter
中为计时器创建了一个
条目
,我希望该输入成为设置计时器时间的变量。我需要这个变量是一个整数而不是一个字符串,但是我得到了这个错误

我看过一些关于这方面的帖子,他们都说要创建一个变量,然后使用
get()
,然后将该变量设置为int,但这并不像您看到的那样有效

我相信这是所有的错误代码:

t = Entry()
t.pack()
stringT = t.get()
intT = int(stringT)
错误:

Traceback (most recent call last):
  File "C:\Users\Traner\Desktop\Python Files\Scoreboard GUI\scoreboard.py", line 41, in <module>
    intT = int(stringT)
ValueError: invalid literal for int() with base 10: ''
回溯(最近一次呼叫最后一次):
文件“C:\Users\Traner\Desktop\Python Files\Scoreboard GUI\Scoreboard.py”,第41行,在
intT=int(stringT)
ValueError:基数为10的int()的文本无效:“”

我希望将
Entry()
设置为整数而不是字符串

您可以执行以下操作:

try:
    intT = int(stringT)
except ValueError:
    intT = 0 # Do something
在这种情况下,如果无法转换,则将其视为0。 检查这是否适用于您的软件

基本上,它所做的是在引发异常时捕获并执行某些操作

提示:您可能还需要使用isdigit()之类的工具来检查您收到的内容是否为非文字,例如

编辑:正如@Carcigenicate在评论中所说:

intT = int(stringT) if stringT else 0

这也可以用一种更为通灵的方式来做这件事。但如果将stringT写为非数字(例如,“abcd”),则此操作将失败。您仍然应该验证它。

在上面的代码中,stringT返回一个空字符串,因此您得到了异常

尝试:


您可以使用tk.IntVar作为条目小部件的容器。这将使它在任何时候
.get()
IntVar时都会返回一个整数。但是,它并不限制用户在字段中输入非整数。如果您需要验证此字段/限制某些密钥,那么我建议您查看此Q/A:Thank you@SyntaxVoid我终于用您所说的让它工作了!您在创建UI大约一毫秒后调用了
t.get()
,远远早于用户看到UI,更不用说键入什么了。Hello@Carcigenicate,我添加了您的注释并引用了它。感谢您的评论。虽然这会消除错误,但它仍然不是一个合适的解决方案,因为
stringT
将始终为空,因为在屏幕上显示窗口之前调用了
t.get()
t = Entry()
t.pack()
stringT = t.get()
if stringT:
    intT = int(stringT)