我正在尝试制作一个简单的计算器,我使用输入小部件来显示数字,并使用按钮来输入数字。
当我使用按钮(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 函数,但代码滞后且缓慢。
这是“最小改变”的解决方案:你只需要替换几个字符。
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()
所以问题是
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 ,它将改变放置的位置......
好的,这就是删除方法
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()