如何使用<entry_box_name> .insert在输入框中正确放置数字

时间:2018-07-18 14:09:03

标签: python tkinter calculator

我目前正在用Python开发一个计算器应用程序,当您单击一个按钮时,它将在该按钮上的符号输入到窗口顶部显示的输入框中。但是,当我单击数字按钮时-假设我单击按钮上带有“ 4”的按钮,然后单击按钮上带有“ 6”的按钮,则输入框将显示数字64,而不是数字46。 / p>

以下是单击“ 1”按钮时将数字1插入输入框(名为user_output)的代码:

def insert_one():
    user_output.insert(0, "1")

如果您在计算器中输入563,将得到以下内容:http://prntscr.com/k7zugb

有人知道如何解决此问题吗?

编辑:一位叫Bryan Oakley的用户要求提供插图以显示一些代码。这是演示,因此您可以看到将数字输入到user_output中时代码如何工作:

try:
    from Tkinter import *

except ImportError:
    from tkinter import *

window = Tk()
window.title("Demo")
window.geometry("323x75")

def insert_one():
    user_output.insert(0, "1")

def insert_two():
    user_output.insert(0, "2")

def insert_three():
    user_output.insert(0, "3")

user_output = Entry(width=53, justify=LEFT)
one = Button(text="1", height=3, width=2, justify=LEFT, command=insert_one)
two = Button(text="2", height=3, width=2, justify=LEFT, command=insert_two)
three = Button(text="3", height=3, width=2, justify=LEFT, command=insert_three)

user_output.grid(row=0, columnspan=3)
one.grid(row=1, column=0, sticky=N+S+E+W)
two.grid(row=1, column=1, sticky=N+S+E+W)
three.grid(row=1, column=2, sticky=N+S+E+W)

window.mainloop()

1 个答案:

答案 0 :(得分:1)

简单的解决方案是使用索引“ end”而不是零。

您的问题是如何使用插入。 user_output.insert(0, "1")。在这里,您输入的索引为零,换句话说,每次按下按钮时,它将始终在前面插入数字。而是只使用“ end”作为索引。

try:
    from Tkinter import *

except ImportError:
    from tkinter import *

window = Tk()
window.title("Demo")
window.geometry("323x75")

def insert_one():
    user_output.insert("end", "1")

def insert_two():
    user_output.insert("end", "2")

def insert_three():
    user_output.insert("end", "3")

user_output = Entry(width=53, justify=LEFT)
one = Button(text="1", height=3, width=2, justify=LEFT, command=insert_one)
two = Button(text="2", height=3, width=2, justify=LEFT, command=insert_two)
three = Button(text="3", height=3, width=2, justify=LEFT, command=insert_three)

user_output.grid(row=0, columnspan=3)
one.grid(row=1, column=0, sticky=N+S+E+W)
two.grid(row=1, column=1, sticky=N+S+E+W)
three.grid(row=1, column=2, sticky=N+S+E+W)

window.mainloop()