total = sum(int(e.get()) for e in (feet_entry1, feet_entry2, feet_entry3))
def callback():
global total
l.configure(text= "The output MV is %s" % total, font='none 12 bold')
它显示了此错误
total = sum(int(e.get()) for e in (feet_entry1, feet_entry2, feet_entry3))
ValueError: invalid literal for int() with base 10: ''
答案 0 :(得分:3)
调用feet_entry1
时,feet_entry2
,feet_entry3
,''
中的至少一个必须返回.get()
。
如果您在交互式提示中尝试,您将得到相同的错误:
>>> int('')
Traceback (most recent call last):
ValueError: invalid literal for int() with base 10: ''
您可以通过过滤掉空值来解决此问题:
sum(int(e.get()) for e in (feet_entry1, feet_entry2, feet_entry3)
if e.get())
if e.get()
会将值转换为布尔值。空字符串的值为False
,因此将被忽略。
请参阅List Comprehensions的文档:
>>> vec = [-4, -2, 0, 2, 4]
>>> # filter the list to exclude negative numbers
>>> [x for x in vec if x >= 0]
[0, 2, 4]