Как я могу сделать кнопку ввода в виде целого числа - PullRequest
0 голосов
/ 10 апреля 2020

Я только начал работать с python практически без опыта программирования. Как большинство новичков я пишу калькулятор. У меня есть несколько кнопок для записи моих номеров на этикетке. Это работает хорошо, если я установил textvariable в StringVar как фрагмент ниже:

numbers = StringVar()
display = Label(root, font = "Arial 20", textvariable = numbers, relief = RIDGE, anchor = E)

Но когда я установил это в IntVar, он больше не работает. Кажется, я не могу решить мою проблему. Вот еще немного моего кода, чтобы прояснить, что я делаю (неправильно?).

numbers = IntVar()
display = Label(root, font = "Arial 20", textvariable = numbers, relief = RIDGE, anchor = E)
display.place(x=1, y=1, width=212,height=47


def display_input (inputValue):
    CurrentInput = numbers.get()
    numbers.set(CurrentInput + inputValue)


btn1 = Button(root, text = '1', bd = '1', bg = 'lightsteelblue', relief = RAISED, command = lambda: display_input('1'))
btn1.place(x=1, y=96, width=71,height=47) 

1 Ответ

1 голос
/ 11 апреля 2020

здесь вы вызываете функцию display_input со строкой (str) вместо целого числа (int):

# '1' with quotes is a string, not an integer
Button(root, ..., command = lambda: display_input('1'))

Это заставит вас попытаться обновить IntVar с результатом суммы int с str, которая не поддерживается:

>>> 0 + '1'
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Замена этого command вместо display_input(1) (здесь 1 является int) должен исправить вашу проблему.

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