Как преобразовать tkinter get функцию String в int в Python - PullRequest
0 голосов
/ 07 ноября 2019
 name=Entry()
x=name.get()

У меня print(int(x)) Но выдает следующую ошибку.

 Traceback (most recent call last):
  File "G:/Coding/Python/first-hit/Mangal's CAFE.py", line 228, in <module>
    print(int(x))
ValueError: invalid literal for int() with base 10: ''

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Как уже говорилось в комментариях, код преобразуется в "int" и поэтому не работаетЯ часто использую что-то вроде функции ниже. Он всегда может вернуть int, какой бы ни была строка. Или может вернуть что-то еще, если выполняется блок исключений.

def to_int(string, fail = 0):
    try: 
        return int(string)
    except ValueError:
        return fail

Использование:

v = to_int(entry.get(), fail = None)
if v is None:
    run_notint()
else:
    run_is_int()

Я считаю, что простого возврата нуля достаточно во многих ситуациях, и в этом случае if: else:не требуется.

v = to_int(entry.get())
... code to process the integer.
0 голосов
/ 07 ноября 2019

Я думаю, что проблема в том, что ваша запись пуста, поэтому, возможно, поэтому вызов int() дает вам эту ошибку. Я попытался бы сначала проверить правильность ввода записи перед приведением к int() (например, передав 0 , если запись пуста).

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...