Есть ли способ преобразовать числа, которых еще нет, в python? (Решено) - PullRequest
0 голосов
/ 25 мая 2020

Я пишу простую математическую программу, и это мое первое приложение на основе пользовательского интерфейса. Я пытаюсь получить запись и превратить ее в число:

s2E=tk.Entry()
s3E=tk.Entry()
s1Str=str(s1E)
s2Str=str(s2E)
s3Str=str(s3E)
s1=int(s1Str)
s2=int(s2Str)
s3=int(s3Str)

Однако возвращается ошибка:

File "C:\Users\Owner\Desktop\Programming\PythonPrograms\UItest.py", line 19, in <module>                                                                                                                                         s1=int(s1Str)
ValueError: invalid literal for int() with base 10: '.!entry'

1 Ответ

2 голосов
/ 25 мая 2020

A tk.Entry не может быть легко преобразовано в целое число python. Когда вы попробуете str(tk.Entry), он вернет '!entry'. При преобразовании строк в целые числа вы можете указать основу для преобразования, и int() будет преобразовывать на основе базы (каламбур непреднамеренно). Для основы 10 у вас нет букв или символов, поэтому преобразовать '!entry' в целое число невозможно. Вам нужно вызвать tk.Entry().get(), который вернет строку всего в записи. Однако он вернет это мгновенно, не давая пользователю времени что-либо ввести, поэтому вы получите пустую строку ''. Опять же, символ «ничего» не находится в базе 10, поэтому это вызовет ошибку. Вам нужно установить временную задержку перед проверкой, чтобы пользователь мог что-то ввести, или вы можете создать кнопку, которая вызывает функцию, которая проверяет, что вы хотите проверить при нажатии:

def check():
    global s1, s2, s3
    s1 = s1E.get()
    s2 = s2E.get()
    s3 = s3E.get()

butt1 = tk.Button(text='Submit numbers', command=check)
...

Это будет проверять и присвоить все значения в записях, когда пользователь нажимает кнопку, давая ему / ей время для ввода.

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