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 = Falseelse:#没有铵下运算按钮#判断原始界面数字是否为0existNumber = 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 计算列表置0self.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('<Enter>',self.changeBg)buttonCE.bind('<Leave>',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('<Enter>',self.changeBg)buttonC.bind('<Leave>',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('<Enter>',self.changeBg)buttonDel.bind('<Leave>',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('<Enter>',self.changeBg)buttonDiv.bind('<Leave>',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('<Enter>',self.changeBg)button1.bind('<Leave>',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('<Enter>',self.changeBg)button2.bind('<Leave>',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('<Enter>',self.changeBg)button3.bind('<Leave>',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('<Enter>',self.changeBg)buttonX.bind('<Leave>',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('<Enter>',self.changeBg)button4.bind('<Leave>',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('<Enter>',self.changeBg)button5.bind('<Leave>',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('<Enter>',self.changeBg)button6.bind('<Leave>',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('<Enter>',self.changeBg)button_.bind('<Leave>',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('<Enter>',self.changeBg)button7.bind('<Leave>',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('<Enter>',self.changeBg)button8.bind('<Leave>',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('<Enter>',self.changeBg)button9.bind('<Leave>',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('<Enter>',self.changeBg)buttonAdd.bind('<Leave>',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('<Enter>',self.changeBg)buttonFlag.bind('<Leave>',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('<Enter>',self.changeBg)button0.bind('<Leave>',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('<Enter>',self.changeBg)buttonPoint.bind('<Leave>',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('<Enter>',self.changeBg)buttonEque.bind('<Leave>',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()

转载于:https://blog.51cto.com/bryanguo/1955837

基于python tkinter的简单计算器(v1.0)相关推荐

  1. 80行代码使用Python+tkinter实现一个计算器

    闲话不说,直奔主题.建议大家跟着敲一遍代码,体会一下代码复用.字符串方法的运用和动态创建组件的妙处,然后在这个框架的基础上进行补充和发挥. 选择任何一款Python开发环境,创建一个程序文件,命名为t ...

  2. 基于Python/Tkinter的RGB颜色查询器

    这是基于Python/Tkinter的16位RGB颜色查询器,因为之前在做WEB前端设计配色方案的时候,需要了解色值,每次用网页查询颜色对应的RGB值和HEX值,很不方便,所以就想写个单机程序,原本是 ...

  3. python点名代码_基于python tkinter的点名小程序功能的实例代码

    基于python tkinter的点名小程序功能的实例代码,花名册,次数,窗口,未找到,初始化 基于python tkinter的点名小程序功能的实例代码 易采站长站,站长之家为您整理了基于pytho ...

  4. Python tkinter的简单使用,在绘布上播放GIF和图片

    Python tkinter的简单使用,在绘布上播放GIF和图片 文章目录 Python tkinter的简单使用,在绘布上播放GIF和图片 前言 一.tkinter 的简单组件以及pack(),gr ...

  5. 基于python,实现简单的爬取基金净值的爬虫

    Python 基金爬虫 基于python,实现简单的爬取基金净值的爬虫 基于python,实现简单的爬取基金净值的爬虫 基于python的requests和进程池实现了简单的基金数据爬取脚本: imp ...

  6. 角度计算器 v1.0绿色免费版

    点击下载来源:角度计算器 v1.0绿色免费版 角度计算器是专门为数学工作者和学生设计的一款三角函数计算软件,对于一些特殊的角度(0.30.45.60.90)相信大家都能够倒背如流,不过不可能所有事情都 ...

  7. 基于Python/Tkinter的飞机大战单机小游戏

    这是很早之前课余时间写的基于Python/Tkinter单机小游戏,用来练手,今天将代码贴出来,方便大家一起学习,通过Py/Tk对于学习GUI作为一个入口,其实是个不错入口,在这里推荐一下Tcl/Tk ...

  8. 基于python+tkinter的学生成绩信息管理系统

    基于python+tkinter的学生成绩信息管理系统 系统设计 2.开发工具 开发语言:python3.6.8 开发工具:JetBrains PyCharm 2019.1.2 x64 使用三方模块: ...

  9. 【基于Python+tkinter的音乐播放器开发-哔哩哔哩】 https://b23.tv/eG2TwOL

    [基于Python+tkinter的音乐播放器开发-哔哩哔哩] https://b23.tv/eG2TwOL https://b23.tv/eG2TwOL

最新文章

  1. jittor和pytorch生成网络对比之cgan
  2. Linux、Windows进程间通信
  3. 陕西省天然气行业十四五建设展望及发展战略规划报告2021版
  4. nfs:server is not responding,still trying 原因与解决方案
  5. matlab中GUI的属性检查器中的XLimMode是什么_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (二)GUIDE...
  6. Android心得8--Internet
  7. Reading SBAR SDN flow-Based monitoring and Application Recognition
  8. linux流式访问日志,流式实时日志分析系统的实现原理
  9. 域渗透——Pass The Hash Pass The Key
  10. linux mmap实例_Linux下通过共享内存和mmap实现进程间通讯(含实例)
  11. Faster RCNN好文(转)
  12. ViT (Vision Transformer) ---- Transformer Model(1)
  13. 巧用DictionaryTKey,TValue,完成客户需求
  14. QQ音乐JS逆向爬虫,获取调皮的sign参数,我用python全都爬!
  15. matlab菲涅尔衍射光强分布,求助!!!用颜色表示的菲涅尔衍射的光强分布图
  16. 51单片机学习:蜂鸣器实验
  17. 淘宝客淘宝联盟解析二合一链接获取优惠链接还原二合一,提取优惠信息
  18. 推荐系统论文11月组队学习
  19. Excel的25个知识~边看边操作
  20. Gsensor旋转180°怎么处理

热门文章

  1. Android 自定义彩色圆环,Android自定义View之酷炫数字圆环
  2. java周记_Java学习周记week01
  3. php综合复习题大全(上)——基础篇
  4. 计算机慢怎么解决6,Windows7电脑反应变慢怎么办?
  5. HDU-6750:Function(容斥)
  6. USB打印机连接电脑无故变成unknown device
  7. 暴力枚举,给出顶点坐标,求钝角三角形的个数
  8. andrid 开源UI控件
  9. 《异域狂想曲》官方秘籍
  10. 手绘和码绘的对比(2)——动态比较