python用tkinter做简易计算器_基于python tkinter的简单计算器(v1.0)

import tkinter

#定义计算器类

class Calc:

#初始化魔术方法

def __init__(self):

#初始化共用属性

#定义一个用于存放被计算字符串的列表

self.operationList = []

#定义运算标记 确定是否输入了运算符号

self.isOper = False

#初始化界面

self.initWindows()

#更改按键盘颜色方法

def changeBg(self,evt):

evt.widget['bg'] = 'cyan'

#恢复按键盘颜色方法

def backBg(self,evt):

evt.widget['bg'] = 'lightgray'

#数字按钮操作方法

def buttonAction(self,number):

#判断用户是否按下了运算按钮

if self.isOper == True:

#在界面上显示运算符之后的数

self.num.set(number)

#运算标记复位

self.isOper = False

else:

#没有铵下运算按钮

#判断原始界面数字是否为0

existNumber = self.num.get()

if existNumber == '0':

#如果界面中的初始数据为0 则获取用户输入数据并显示

self.num.set(number)

else:

#如果界面中的初始数据不为0 则对字符进行累加

self.num.set(self.num.get()+number)

#运算按钮操作方法

def operation(self,opFlag):

#运算标记置为真

self.isOper = True

#获取界面中存在的数 并且写入列表

self.operationList.append(self.num.get())

#当前运算符号不会在上一步中写入 需要单独写入

self.operationList.append(opFlag)

#获取运行结果操作方法

def getResult(self):

#将当前界面中数字加入计算列表

self.operationList.append(self.num.get())

#开始计算

result = eval(''.join(self.operationList))

self.num.set(result)

#全部清空重新计算方法

def clearAll(self):

#界面置0 计算列表置0

self.num.set('0')

self.operationList.clear()

#运算标志复位

self.isOper = False

#实现退格键方法

def backSpace(self):

#获取当前显示数字长度

strLength = len(self.num.get())

#如果当前显示有数字

if strLength > 1:

#删除字串中最后一个字

presentStr = self.num.get()

presentStr = presentStr[:strLength - 1]

self.num.set(presentStr)

else:

self.num.set('0')

#正负号实现方法

def pm(self):

presentStr = self.num.get()

#实现增加和去除负号

if presentStr[0] == '-':

self.num.set(presentStr[1:])

#原始字串不得以-号和0开头

elif presentStr[0] not in ('-','0'):

self.num.set('-'+presentStr)

#界面布局方法

def initWindows(self):

#生成主窗口 定制窗口尺寸

root = tkinter.Tk()

root.minsize(400,500)

root.title('微硬计算器')

#生成用于保存数值的变量

self.num = tkinter.StringVar()

self.num.set(0)

#运算结果输出位置

result = tkinter.Label(root,width=20,height=2,bg='white',bd=10,anchor='e',font=('宋体',50),textvariable=self.num)

result.place(relx=0,rely=0,relwidth=1.0,relheight=0.4)

###########################以下为按键部分############################

buttonCE = tkinter.Button(root,text='CE',bg='lightgray',command = self.clearAll)

buttonCE.place(relx=0,rely=0.4,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonCE.bind('',self.changeBg)

buttonCE.bind('',self.backBg)

buttonC = tkinter.Button(root,text='C',bg='lightgray',command = self.clearAll)

buttonC.place(relx=0.25,rely=0.4,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonC.bind('',self.changeBg)

buttonC.bind('',self.backBg)

buttonDel = tkinter.Button(root,text='<-',bg='lightgray',command = self.backSpace)

buttonDel.place(relx=0.5,rely=0.4,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonDel.bind('',self.changeBg)

buttonDel.bind('',self.backBg)

buttonDiv = tkinter.Button(root,text='÷',bg='lightgray',command = lambda : self.operation('/'))

buttonDiv.place(relx=0.75,rely=0.4,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonDiv.bind('',self.changeBg)

buttonDiv.bind('',self.backBg)

button1 = tkinter.Button(root,text='1',bg='lightgray',command = lambda : self.buttonAction('1'))

button1.place(relx=0,rely=0.5,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button1.bind('',self.changeBg)

button1.bind('',self.backBg)

button2 = tkinter.Button(root,text='2',bg='lightgray',command = lambda : self.buttonAction('2'))

button2.place(relx=0.25,rely=0.5,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button2.bind('',self.changeBg)

button2.bind('',self.backBg)

button3 = tkinter.Button(root,text='3',bg='lightgray',command = lambda : self.buttonAction('3'))

button3.place(relx=0.5,rely=0.5,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button3.bind('',self.changeBg)

button3.bind('',self.backBg)

buttonX = tkinter.Button(root,text='x',bg='lightgray',command = lambda : self.operation('*'))

buttonX.place(relx=0.75,rely=0.5,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonX.bind('',self.changeBg)

buttonX.bind('',self.backBg)

button4 = tkinter.Button(root,text='4',bg='lightgray',command = lambda : self.buttonAction('4'))

button4.place(relx=0,rely=0.6,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button4.bind('',self.changeBg)

button4.bind('',self.backBg)

button5 = tkinter.Button(root,text='5',bg='lightgray',command = lambda : self.buttonAction('5'))

button5.place(relx=0.25,rely=0.6,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button5.bind('',self.changeBg)

button5.bind('',self.backBg)

button6 = tkinter.Button(root,text='6',bg='lightgray',command = lambda : self.buttonAction('6'))

button6.place(relx=0.5,rely=0.6,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button6.bind('',self.changeBg)

button6.bind('',self.backBg)

button_ = tkinter.Button(root,text='-',bg='lightgray',command = lambda : self.operation('-'))

button_.place(relx=0.75,rely=0.6,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button_.bind('',self.changeBg)

button_.bind('',self.backBg)

button7 = tkinter.Button(root,text='7',bg='lightgray',command = lambda : self.buttonAction('7'))

button7.place(relx=0,rely=0.7,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button7.bind('',self.changeBg)

button7.bind('',self.backBg)

button8 = tkinter.Button(root,text='8',bg='lightgray',command = lambda : self.buttonAction('8'))

button8.place(relx=0.25,rely=0.7,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button8.bind('',self.changeBg)

button8.bind('',self.backBg)

button9 = tkinter.Button(root,text='9',bg='lightgray',command = lambda : self.buttonAction('9'))

button9.place(relx=0.5,rely=0.7,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button9.bind('',self.changeBg)

button9.bind('',self.backBg)

buttonAdd = tkinter.Button(root,text='+',bg='lightgray',command = lambda : self.operation('+'))

buttonAdd.place(relx=0.75,rely=0.7,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonAdd.bind('',self.changeBg)

buttonAdd.bind('',self.backBg)

buttonFlag = tkinter.Button(root,text='±',bg='lightgray',command = self.pm)

buttonFlag.place(relx=0,rely=0.8,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonFlag.bind('',self.changeBg)

buttonFlag.bind('',self.backBg)

button0 = tkinter.Button(root,text='0',bg='lightgray',command = lambda : self.buttonAction('0'))

button0.place(relx=0.25,rely=0.8,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

button0.bind('',self.changeBg)

button0.bind('',self.backBg)

buttonPoint = tkinter.Button(root,text='.',bg='lightgray',command = lambda : self.buttonAction('.'))

buttonPoint.place(relx=0.5,rely=0.8,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonPoint.bind('',self.changeBg)

buttonPoint.bind('',self.backBg)

buttonEque = tkinter.Button(root,text='=',bg='lightgray',command = self.getResult)

buttonEque.place(relx=0.75,rely=0.8,relwidth=0.25,relheight=0.1)

#绑定按钮 生成鼠标经过变色效果

buttonEque.bind('',self.changeBg)

buttonEque.bind('',self.backBg)

#########################以上为按键部分############################

#底部显示信息

bottomLabel = tkinter.Label(root,text = 'Power By Microhard Corpration\n@2017'

,bg='cyan',width=30,height = 1,padx=0)

bottomLabel.place(relx=0,rely=0.9,relwidth=1.0,relheight=0.1)

#主窗口循环

root.mainloop()

#实例化计算器对象

c = Calc()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值