如何将按钮输入为整数
How can I make a button input as Integer
我刚开始使用 python,几乎没有实际的编程背景。作为大多数新手,我正在编写一个计算器。我有一些按钮可以将我的号码写入标签。如果我将 StringVar 中的 textvariable 设置为以下代码片段,则效果很好:
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)
此处您使用字符串 (str
) 而不是整数 (int
) 调用 display_input
函数:
# '1' with quotes is a string, not an integer
Button(root, ..., command = lambda: display_input('1'))
这会让您尝试使用 int
与 str
的总和结果来更新 IntVar
,这是不受支持的:
>>> 0 + '1'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
将 command
替换为 display_input(1)
(此处 1
是 int
)应该可以解决您的问题。
我刚开始使用 python,几乎没有实际的编程背景。作为大多数新手,我正在编写一个计算器。我有一些按钮可以将我的号码写入标签。如果我将 StringVar 中的 textvariable 设置为以下代码片段,则效果很好:
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)
此处您使用字符串 (str
) 而不是整数 (int
) 调用 display_input
函数:
# '1' with quotes is a string, not an integer
Button(root, ..., command = lambda: display_input('1'))
这会让您尝试使用 int
与 str
的总和结果来更新 IntVar
,这是不受支持的:
>>> 0 + '1'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
将 command
替换为 display_input(1)
(此处 1
是 int
)应该可以解决您的问题。