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: ''
По крайней мере, один из 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 List:
>>> vec = [-4, -2, 0, 2, 4]
>>> # filter the list to exclude negative numbers
>>> [x for x in vec if x >= 0]
[0, 2, 4]
feet_entry1
,feet_entry2
,feet_entry3
должен возвращать''
когда вы вызываете.get()
. Если вы попробуете в интерактивном приглашении>>> int('')
вы получите ту же ошибку.