Pythontkinter应用之简易计算器
Posted 稚皓君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pythontkinter应用之简易计算器相关的知识,希望对你有一定的参考价值。
tkinter应用之简易计算器
实现效果
程序代码
import re
import tkinter
import tkinter.messagebox
root = tkinter.Tk()
#设置窗口的大小和位置
root.geometry('300x270+400+100')
#不允许改变窗口的大小
root.resizable(False,False)
#设置窗口标题
root.title('简易计算器')
#设置用来显示信息的文本框,并设置为只读
contnetVar = tkinter.StringVar(root , '')
contnetEntry = tkinter.Entry(root, textvariable=contnetVar)
contnetEntry['state'] = 'readonly'
contnetEntry.place(x=10,y=10,width=280,height=20)
#按钮通用代码
def buttonClick(btn):
contnet = contnetVar.get()
#如果已有内容是以小数点开头的,前面加0
if contnet.startswith('.'):
contnet = '0'+contnet
#根据不同的按钮做出相应的处理
if btn in '0123456789':
contnet += btn
elif btn =='.':
lastPart = re.split(r'\\+|-|\\*|/]',contnet)[-1]
if '.' in lastPart:
tkinter.messagebox.showerror('错误','小数点太多了')
return
else:
contnet += btn
elif btn == 'C':
contnet =''
elif btn == '=':
try:
#对输入的表达式进行求值
contnet = str(eval(contnet))
except:
tkinter.messagebox('错误','表达式错误')
return
elif btn in operators:
if contnet.endswith(operators):
tkinter.messagebox.showerror('错误','不允许存在连续运算符')
return
contnet += btn
elif btn == 'Sqrt':
n = contnet.split('.')
if all(map(lambda x:x.isdigit(),n)):
contnet = eval(contnet)**0.5
else:
tkinter.messagebox.showerror('错误','表达式错误')
return
contnetVar.set(contnet)
#放置 清空 按钮 和 ‘=’ 按钮
btnClear = tkinter.Button(root,text='清空',command=lambda :buttonClick('C'))
btnClear.place(x=40,y=40,width=80,height=20)
btnClear = tkinter.Button(root,text='=',command=lambda :buttonClick('='))
btnClear.place(x=170,y=40,width=80,height=20)
#放置10个数字、小数点、和计算平方根的按钮
digits = list('0123456789.')+['Sqrt']
index = 0
for row in range(4):
for col in range(3):
d = digits[index]
index += 1
btnDigit = tkinter.Button(root, text=d, command=lambda x=d : buttonClick(x))
btnDigit.place(x=20+col*70, y=80+row*50, width=50, height=20)
#放置运算符按钮
operators = ('+','-','*','/','**','//')
for index, operator in enumerate(operators):
btnOperator = tkinter.Button(root, text=operator, command=lambda x=operator : buttonClick(x))
btnOperator.place(x=230, y=80 + index * 30, width=50, height=20)
#启动循环
root.mainloop()
以上是关于Pythontkinter应用之简易计算器的主要内容,如果未能解决你的问题,请参考以下文章