【问题标题】:No two operators come close没有两个运营商能接近
【发布时间】: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


猜你喜欢
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多