
Lv.1
在 【Python作品分享】ZCH计算器【作品秀】 中回复
给你一个GUI版的
from tkinter import *
m=0
def join(alpha):
v.set(v.get()+alpha)
def inputnumbernot0(num):
global v
if not v.get()[-1] in '%':
join(str(num))
def input0():
global v
if not v.get()[-1] in '%':
join('0')
def inputfhnotjian(fh):
global v
if not v.get()[-1] in '+-×÷.':
join(fh)
def inputjian():
global v
if not v.get()[-1] in '+-.':
join('-')
def inputpoint():
global v
alpha = v.get()
for i in range(len(alpha)-1, -1, -1):
if alpha[i] in '+-×÷':
break
beta = alpha[i:]
flag = ('.' not in beta)
if flag:
join('.')
def inputbfh():
global v
if not v.get()[-1] in '%+-×÷.':
join('%')
def compile_(beta):
alpha = beta
alpha = alpha.replace('×','*')
alpha = alpha.replace('÷','/')
alpha = alpha.replace('%','*0.01')
if alpha[-1] in '+-':
alpha += '0'
if alpha[-1] in '*/':
alpha += '1'
elif alpha == ' ':
alpha=0
return alpha
def getanswer():
alpha = compile_(v.get())
try:
res = eval(alpha)
except [ZeroDivisionError, SyntaxError]:
res = 0
if res == int(res):
res = int(res)
v.set(" " + str(res))
def getanswer_():
alpha = compile_(v.get())
try:
res = eval(alpha)
except [ZeroDivisionError, SyntaxError]:
res = 0
if res == int(res):
res = int(res)
return res
def clear():
v.set(' ')
def backspace():
v.set(v.get()[:-1])
def M(a=True):
global m
b = getanswer_()
if a:
m = b
else:
m = -b
print(m)
def MC():
global m
m=0
def MR():
if v.get()[-1] in '01234567890' and m>=0:
join('+' + str(m))
else:
join(str(m))
root = Tk()
root.title('Calculator')
root.maxsize(300,300)
Label(root,height=4).grid(column=0,row=0)
v = StringVar()
v.set(' ')
Label(root, font=('Century Gothic',40),textvariable = v).place(x=10,y=0)
Button(root, text=' 7 ',command=lambda:inputnumbernot0(7)).grid(column=0, row=1)
Button(root, text=' 8 ', command=lambda: inputnumbernot0(8)).grid(column=1, row=1)
Button(root, text=' 9 ', command=lambda: inputnumbernot0(9)).grid(column=2, row=1)
Button(root, text=' 4 ', command=lambda: inputnumbernot0(4)).grid(column=0, row=2)
Button(root, text=' 5 ', command=lambda: inputnumbernot0(5)).grid(column=1, row=2)
Button(root, text=' 6 ', command=lambda: inputnumbernot0(6)).grid(column=2, row=2)
Button(root, text=' 1 ', command=lambda: inputnumbernot0(1)).grid(column=0, row=3)
Button(root, text=' 2 ', command=lambda: inputnumbernot0(2)).grid(column=1, row=3)
Button(root, text=' 3 ', command=lambda: inputnumbernot0(3)).grid(column=2, row=3)
Button(root, text=' . ',command = inputpoint).grid(column=0, row=4)
Button(root, text=' 0 ',command = input0).grid(column=1, row=4)
Button(root, text=' % ',command=inputbfh).grid(column=2, row=4)
Button(root, text=' + ',command=lambda:inputfhnotjian('+')).grid(column=3, row=1)
Button(root, text=' - ',command = inputjian).grid(column=3, row=2)
Button(root, text=' × ', command=lambda: inputfhnotjian('×')).grid(column=3, row=3)
Button(root, text=' ÷ ', command=lambda: inputfhnotjian('÷')).grid(column=3, row=4)
Button(root, text=' %s ' % chr(9003), bg='yellow',command = backspace).grid(column=4, row=1)
Button(root, text=' C ',bg='red',fg='white',command = clear).grid(column=4, row=2)
Button(root,text = ' = ',height=3,bg='orange',fg='white',command=getanswer).grid(column=4,row=3,rowspan=2)
Button(root,text=' M+ ',command = M).grid(column=5,row=1)
Button(root, text=' M- ',command=lambda:M(False)).grid(column=5, row=2)
Button(root, text=' MR ',command=MR).grid(column=5, row=3)
Button(root, text=' MC ',command=MC).grid(column=5, row=4)
mainloop()
2020-03-11T14:09:38 点赞:0