简单计算器的制作
首先我们观察一下一个简单的计算器有哪些组件:
可见计算器窗口包含了
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课件与精彩讲解