简单计算器的制作
首先我们观察一下一个简单的计算器有哪些组件:
可见计算器窗口包含了
1.窗口名称——计算器
2.用户输入界面
3.诸多按钮组件
接下来我们就用代码实现一个简单计算器的编程:
#第一步:创建根窗口并命名
from tkinter import * #python 标准的GUI(Graphical User Interface 库) 导入
root=Tk() #创建根窗口
root.title('计算器') #窗口名称
#第二步:创建用户输入界面
formula=StringVar() #接受用户输入变量存入formula
formula.set('0') #将最初变量设定为0
show=Entry(textvariable=formula) #Entry组件用于显示可变文本内容,textvariable是可变文本内容
show.pack(side=TOP) #将其打包并放置在最上方'TOP'
#第三步:制作按钮组件
btnlines=[['CE','C','DEL','÷'],
['7','8','9','×'],
['4','5','6','-'],
['1','2','3','+'],
['±','0','.','=']
] #将所有按钮按行排列好(这里为了方便就省略有%那一行)
def caculate(f,k): #定义计算函数,f代表用户输入的公式,k代表用户的按键
btnfunction=['CE','C','DEL','=','±'] #将按钮分为三类:功能键,数字键,符号键
btnnumber=['%d'%i for i in range(0,10)]
btnsign=['÷','×','-','+']
s=f.get() #获取现在的公式字符串
if k in btnnumber: #如果按钮属于数字键,则要考虑3种情况
if s=='0': #如果目前是初始状态,则按下的按钮应该替代0
f.set(k)
elif len(s)>=2:
if s[-2] in ['/','*','-','+'] and s[-1]=='0': #如果目前公式是一个符号键接一个0,例如'/0',则要将输入的k替换0
f.set(s[:-1]+k)
else: #其他情况只需要在公式后面添加次数字就可以
f.set(s+k)
else:
f.set(s+k)
elif k in btnsign: #如果k是符号键
if k=='÷': #将'÷'转化为计算机能识别的'/'
f.set(s+'/')
elif k=='×': #将'×'转化为计算机能识别的'*'
f.set(s+'*')
else:
f.set(s+k)
elif k in btnfunction: #如果k是功能键
if k=='CE': #这里为了简化,就把'CE'和'C'都看作一样的重置了
f.set('0')
elif k=='C':
f.set('0')
elif k=='DEL': #删除键——只取最后一个字符前面的公式
f.set(s[:-1])
elif k=='±': #将公式变为负(并不严谨,这里为了方便就直接在前面添加'-'号)
if s[0]=='-':
f.set(s[1:])
else:
f.set('-'+s)
elif k=='=': #直接用eval计算公式,并返回一个字符串值
f.set(str(eval(f.get())))
else:
f.set(s+k) #将'.'的情况补充在这里
return True
for line in btnlines:
lineFrame=Frame(root)
for key in line:
btn=Button(lineFrame,text=key,bg='white',font=('Verdana',16),width=5,command=lambda f=formula,k=key:caculate(f,k))
btn.pack(side=LEFT)
lineFrame.pack(side=TOP)
mainloop()
最后的成果图:
附:
【参考文献】
[0]老师提供的PPT课件与精彩讲解