猫史档案馆


【Python作品分享】计算器

用户:爱玩系统的老徐爱玩系统的老徐查看:0 回复:0 评论:0 创建时间:2022-03-29T15:13:56


【作品展示】

center_image

 

【作品介绍】

用 tkinter 库编的一个简易计算器

 

【作品源代码】

import tkinter,time
root = tkinter.Tk()
root.minsize(280, 500)
root.resizable(False,False)
root.title('计算器')
result = tkinter.StringVar()
result.set(0)
result2 = tkinter.StringVar()
result2.set('')
label = tkinter.Label(root, font=('宋体', 20), bg='#EEE9E9',bd='9', fg='#828282', anchor='se', textvariable=result2)
label.place(width=280, height=170)
label2 = tkinter.Label(root, font=('Calibri', 30), bg='#EEE9E9',bd='9', fg='black', anchor='se', textvariable=result)
label2.place(y=170, width=280, height=60)
btn7 = tkinter.Button(root, text='7', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('7'))
btn7.place(x=0, y=285, width=70, height=55)
btn8 = tkinter.Button(root, text='8', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('8'))
btn8.place(x=70, y=285, width=70, height=55)
btn9 = tkinter.Button(root, text='9', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('9'))
btn9.place(x=140, y=285, width=70, height=55)
btn4 = tkinter.Button(root, text='4', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('4'))
btn4.place(x=0, y=340, width=70, height=55)
btn5 = tkinter.Button(root, text='5', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('5'))
btn5.place(x=70, y=340, width=70, height=55)
btn6 = tkinter.Button(root, text='6', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('6'))
btn6.place(x=140, y=340, width=70, height=55)
btn1 = tkinter.Button(root, text='1', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('1'))
btn1.place(x=0, y=395, width=70, height=55)
btn2 = tkinter.Button(root, text='2', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('2'))
btn2.place(x=70, y=395, width=70, height=55)
btn3 = tkinter.Button(root, text='3', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('3'))
btn3.place(x=140, y=395, width=70, height=55)
btn0 = tkinter.Button(root, text='0', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressNum('0'))
btn0.place(x=70, y=450, width=70, height=55)
btnac = tkinter.Button(root, text='AC', bd=0.5, bg='orange', font=('宋体', 20), fg='#4F4F4F', command=lambda: pressCompute('AC'))
btnac.place(x=0, y=230, width=70, height=55)
btnback = tkinter.Button(root, text='←', bg='yellow', font=('Calibri', 20), fg='#4F4F4F', bd=0.5, command=lambda: pressCompute('b'))
btnback.place(x=70, y=230, width=70, height=55)
btndivi = tkinter.Button(root, text='÷', bg='yellow', font=('宋体', 20), fg='#4F4F4F', bd=0.5, command=lambda: pressCompute('/'))
btndivi.place(x=140, y=230, width=70, height=55)
btnmul = tkinter.Button(root, text='×', bg='yellow', font=('宋体', 20), fg="#4F4F4F", bd=0.5, command=lambda: pressCompute('*'))
btnmul.place(x=210, y=230, width=70, height=55)
btnsub = tkinter.Button(root, text='-', bg='yellow', font=('宋体', 20),fg=('#4F4F4F'), bd=0.5, command=lambda: pressCompute('-'))
btnsub.place(x=210, y=285, width=70, height=55)
btnadd = tkinter.Button(root, text='+', bg='yellow', font=('宋体', 20),fg=('#4F4F4F'), bd=0.5, command=lambda: pressCompute('+'))
btnadd.place(x=210, y=340, width=70, height=55)
btnequ = tkinter.Button(root, text='=', bg='orange', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressEqual())
btnequ.place(x=210, y=395, width=70, height=110)
btnper = tkinter.Button(root, text='%', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressCompute('%'))
btnper.place(x=0, y=450, width=70, height=55)
btnpoint = tkinter.Button(root, text='.', font=('宋体', 20), fg=('#4F4F4F'), bd=0.5, command=lambda: pressCompute('.'))
btnpoint.place(x=140, y=450, width=70, height=55)
lists = []  
isPressSign = False
isPressNum = False
def pressNum(num):
  global lists
  global isPressSign
  if isPressSign == False:
    pass
  else:
    result.set(0)
    isPressSign = False
  oldnum = result.get()
  if oldnum == '0':
    result.set(num)
  else: 
    newnum = oldnum + num
    result.set(newnum)
def pressCompute(sign):
  global lists
  global isPressSign
  num = result.get()
  lists.append(num)

  lists.append(sign)
  isPressSign = True

  if sign == 'AC':
    lists.clear()
    result.set(0)
    result2.set('')
  if sign == 'b':
    a = num[0:-1]
    lists.clear()
    if str(a)=='':
        result.set(0)
    else:
        result.set(a)
    result2.set('')
def pressEqual():
  global lists
  global isPressSign
  curnum = result.get()  
  lists.append(curnum)
  computrStr = ''.join(lists) 
  if not '/0' in computrStr:
    if not (computrStr == '1' or computrStr == '2' or computrStr == '3' or computrStr == '4' or computrStr == '5' or computrStr == '6' or computrStr == '7' or computrStr == '8' or computrStr == '9' or computrStr == '0'):
      endNum = eval(computrStr)
      endNum = float(str(endNum)[0:13:1])
      lists = list(str(endNum))
      if lists[-1] == '0' and lists[-2] == '.':
        lists.remove('.')
        lists.remove('0')
        endNum = ''.join(lists) 
    else:
      endNum = computrStr
  else:
    endNum = '错误'
  computrStr = computrStr.replace('*','×')
  computrStr = computrStr.replace('/','÷')
  result.set(endNum)
  result2.set(computrStr)
  lists.clear()
root.mainloop()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页