Я написал этот код код с Python 3 TKinter, и это дает мне ошибку

1
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
    По крайней мере один из feet_entry1 , feet_entry2 , feet_entry3 должен возвращать '' когда вы вызываете .get() . Если вы попробуете в интерактивном приглашении >>> int('') вы получите ту же ошибку.
  • 0
    Заголовок должен позволить другим пользователям с такой же проблемой найти ваш вопрос. Пожалуйста, измените ваш заголовок на более значимый
Теги:
tkinter

1 ответ

1

По крайней мере, один из 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]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню