【发布时间】:2022-06-10 23:59:51
【问题描述】:
我想设计一个计算器,当我们多次按下 + 等运算符时,它不应该显示,这样就不会出现相邻的两个运算符。请帮助我进行适当的更改,我应该选择
import parser
from tkinter import *
root=Tk()
root.title("calculator")
i=0
def getvariable(num):
global i
entry1.insert(i,num)
i+=1
def getopr(opr):
global i
length=len(opr)
if (length>=2):
clearall()
else:
entry1.insert(i, opr)
i+=length
def one():
getvariable(1)
def two():
getvariable(2)
def three():
getvariable(3)
def four():
getvariable(4)
def five():
getvariable(5)
def six():
getvariable(6)
def seven():
getvariable(7)
def eight():
getvariable(8)
def nine():
getvariable(9)
def zero():
getvariable(0)
def clearall():
entry1.delete(0,END)
def undo():
entire=entry1.get()
if len(entire):
newstring=entire[:-1]
clearall()
entry1.insert(0,newstring)
else:
entry1.insert(0,'error')
def result():
entire_str=entry1.get()
try:
a=parser.expr(entire_str).compile()
result=eval(a)
clearall()
entry1.insert(0,result)
except:
clearall()
entry1.insert(0,'error')
buttono=Button(text='quit',command=root.quit)
buttono.grid(row=0,column=9)
entry1=Entry()
entry1.grid(row=0,columnspan=7,sticky=W+E)
button1=Button(root,text='1',command=one)
button1.grid(row=1,column=0)
button2=Button(root,text='2',command=two)
button2.grid(row=1,column=1)
button3=Button(root,text='3',command=three)
button3.grid(row=1,column=2)
button4=Button(root,text='4',command=four)
button4.grid(row=2,column=0)
button5=Button(root,text='5',command=five)
button5.grid(row=2,column=1)
button6=Button(root,text='6',command=six)
button6.grid(row=2,column=2)
button7=Button(root,text='7',command=seven)
button7.grid(row=3,column=0)
button8=Button(root,text='8',command=eight)
button8.grid(row=3,column=1)
button9=Button(root,text='9',command=nine)
button9.grid(row=3,column=2)
button0=Button(root,text='0',command=zero)
button0.grid(row=4,column=1)
buttonclear=Button(root,text='<-',command=undo)
buttonclear.grid(row=4,column=2)
buttondel=Button(root,text='del',command=clearall)
buttondel.grid(row=4,column=0)
buttonm=Button(root,text='*',command=lambda :getopr('*'))
buttonm.grid(row=1,column=3)
buttondi=Button(root,text='/',command=lambda :getvariable('/'))
buttondi.grid(row=2,column=3)
buttona=Button(root,text='+',command=lambda :getopr('+'))
buttona.grid(row=3,column=3)
buttonmi=Button(root,text='-',command=lambda :getvariable('-'))
buttonmi.grid(row=4,column=3)
buttone=Button(root,text='=',command=result)
buttone.grid(row=1,column=5)
def one():
print(1)
root.mainloop()
【问题讨论】:
-
你可以检查
entry1.get().endswith('+')而不是打电话给insert
标签: python