Я написал этот код код с Python 3 TKinter, и это дает мне ошибку - PullRequest
0 голосов
/ 01 декабря 2018
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: ''

1 Ответ

0 голосов
/ 01 декабря 2018

Как минимум один из 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, поэтому они игнорируются.

См. Документацию для Понимания списка :

>>> vec = [-4, -2, 0, 2, 4]
>>> # filter the list to exclude negative numbers
>>> [x for x in vec if x >= 0]
[0, 2, 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...