Tkinter 条目小部件输入是向后写的

问题描述 投票:0回答:3

我正在尝试制作一个简单的计算器,我使用输入小部件来显示数字,并使用按钮来输入数字。

当我使用按钮(btn1、btnadd、btn2)输入数字时,在条目小部件中应该是这样的

1+2
而不是这样
2+1

我知道在数学上它们是相同的,但除法或减法不会是这样

我的代码:

from tkinter import *

root = Tk()

def add():
    entered.insert(0, '+')

def num_1():
    entered.insert(0, 1)

def num_2():
    entered.insert(0, 2)

entered = Entry(root)
entered.pack()
btn1 = Button(root, text='1', command=num_1).pack()
btn2 = Button(root, text='2', command=num_2).pack()
btn_add = Button(root, text='+', command=add).pack()

root.mainloop()

P.S 我尝试使用 pyautogui write 函数,但代码滞后且缓慢。

python python-3.x tkinter tkinter-entry tkinter-button
3个回答
2
投票

这是“最小改变”的解决方案:你只需要替换几个字符。

from tkinter import *

root = Tk()

def add():
    entered.insert(END, '+') # END instead of 0, it adds '+' at the end

def num_1():
    entered.insert(END, 1) # END instead of 0, it adds 1 at the end

def num_2():
    entered.insert(END, 2) # END instead of 0, it adds 2 at the end

entered = Entry(root)
entered.pack()
btn1 = Button(root, text='1', command=num_1).pack()
btn2 = Button(root, text='2', command=num_2).pack()
btn_add = Button(root, text='+', command=add).pack()

root.mainloop()

1
投票

所以问题是

entered.insert(0, '+')
0 是放置 + 的位置,所以每次你按下按钮时,你都会将 1、2 和 + 放置在位置 0

from tkinter import *

root = Tk()
i= 0

def add():
    global i
    entered.insert(i, '+')
    i += 1
def num_1():
    global i
    entered.insert(i, 1)
    i += 1

def num_2():
    global i
    entered.insert(i, 2)
    i += 1

entered = Entry(root)
entered.pack()
btn1 = Button(root, text='1', command=num_1).pack()
btn2 = Button(root, text='2', command=num_2).pack()
btn_add = Button(root, text=' +', command=add).pack()

root.mainloop()

所以现在你有了全局 i ,它将改变放置的位置......


0
投票

好的,这就是删除方法

from asyncio.windows_events import NULL
from os import remove
from tkinter import *

root = Tk()
i= 0

def add():
    global i
    entered.insert(i, '+')
    i += 1
def num_1():
    global i
    entered.insert(i, 1)
    i += 1

def num_2():
    global i
    entered.insert(i, 2)
    i += 1
def delete():
    global i
    i -= 1
    entered.delete(i)



entered = Entry(root)
entered.pack()
btn1 = Button(root, text='1', command=num_1).pack()
btn2 = Button(root, text='2', command=num_2).pack()
btn_add = Button(root, text=' +', command=add).pack()
btn_rem = Button(root,text ='del', command=delete).pack()


root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.