python使用tkinter实现简单计算器


Posted in Python onJanuary 30, 2018

本文实例为大家分享了python使用tkinter实现简单计算器的具体代码,供大家参考,具体内容如下

class Counter: 
 #引入tkinter 
 import tkinter as tk 
 #引入消息弹窗模块 
 import tkinter.messagebox as mbox 
 
 #初始化Counter 
 def __init__(self): 
 #生成一个窗口对象 
 self.window = self.tk.Tk() 
 #命名窗口对象的显示title 
 self.window.title('计算器') 
 #设置窗口的大小 
 self.window.minsize(240, 325) 
 self.window.maxsize(240, 325) 
 #是否清空显示框判定参数 
 self.is_init_lable = False 
 #设置菜单 
 self.set_menu() 
 #设置显示框 
 self.lable_show = self.tk.Label(text='', anchor='se', font=('黑体', 30), fg='black') 
 self.lable_show.place(x=0, y=0, width=240, height=80) 
 #设置按钮组件 
 self.set_buttons() 
 #将窗口放入主消息队列 
 self.window.mainloop() 
 
 #设置菜单 
 def set_menu(self): 
 #创建总菜单 
 menubar = self.tk.Menu(self.window) 
 #创建一个下拉菜单,并且加入文件菜单 
 filemenu = self.tk.Menu(menubar, tearoff=0) 
 #创建下来菜单的选项 
 filemenu.add_command(label="退出计算器", command=self.window.quit) 
 #print author的函数 
 def show_author(): 
  self.mbox.showinfo(message='Wiz333@XDL 2017') 
 filemenu.add_command(label="作者", command=show_author) 
 #将文件菜单作为下拉菜单添加到总菜单中,并且将命名为操作 
 menubar.add_cascade(label="操作", menu=filemenu) 
 #显示总菜单 
 self.window.config(menu=menubar) 
 
 #设置按钮组件 
 def set_buttons(self): 
 #7 
 btn7 = self.tk.Button(text='7', bd=2, font='黑体') 
 btn7.place(x=0, y=90, width=60, height=40) 
 #8 
 btn8 = self.tk.Button(text='8', bd=2, font='黑体') 
 btn8.place(x=60, y=90, width=60, height=40) 
 #9 
 btn9 = self.tk.Button(text='9', bd=2, font='黑体') 
 btn9.place(x=120, y=90, width=60, height=40) 
 #+ 
 btn_jia = self.tk.Button(text='+', bd=2, font='黑体') 
 btn_jia.place(x=180, y=90, width=60, height=40) 
 #4 
 btn4 = self.tk.Button(text='4', bd=2, font='黑体') 
 btn4.place(x=0, y=130, width=60, height=40) 
 #5 
 btn5 = self.tk.Button(text='5', bd=2, font='黑体') 
 btn5.place(x=60, y=130, width=60, height=40) 
 #6 
 btn6 = self.tk.Button(text='6', bd=2, font='黑体') 
 btn6.place(x=120, y=130, width=60, height=40) 
 #- 
 btn_jian = self.tk.Button(text='-', bd=2, font='黑体') 
 btn_jian.place(x=180, y=130, width=60, height=40) 
 #1 
 btn1 = self.tk.Button(text='1', bd=2, font='黑体') 
 btn1.place(x=0, y=170, width=60, height=40) 
 #2 
 btn2 = self.tk.Button(text='2', bd=2, font='黑体') 
 btn2.place(x=60, y=170, width=60, height=40) 
 #3 
 btn3 = self.tk.Button(text='3', bd=2, font='黑体') 
 btn3.place(x=120, y=170, width=60, height=40) 
 #* 
 btn_cheng = self.tk.Button(text='*', bd=2, font='黑体') 
 btn_cheng.place(x=180, y=170, width=60, height=40) 
 #0 
 btn0 = self.tk.Button(text='0', bd=2, font='黑体') 
 btn0.place(x=0, y=210, width=120, height=40) 
 #. 
 btn_point = self.tk.Button(text='.', bd=2, font='黑体') 
 btn_point.place(x=120, y=210, width=60, height=40) 
 #/ 
 btn_chu = self.tk.Button(text='/', bd=2, font='黑体') 
 btn_chu.place(x=180, y=210, width=60, height=40) 
 #取消 
 btn_cancel = self.tk.Button(text='C', bd=2, font='黑体') 
 btn_cancel.place(x=0, y=250, width=60, height=40) 
 #确定 
 btn_ok = self.tk.Button(text='=', bd=2, font='黑体') 
 btn_ok.place(x=60, y=250, width=180, height=40) 
 #绑定Button的点击事件 
 btn7.bind_class('Button', '<Button-1>', self.click_button) 
 
 #绑定Button的点击事件 
 def click_button(self,e): 
 #判断是否是新的运算,如果是则清空显示框 
 if self.is_init_lable: 
  self.lable_show['text'] = '' 
  self.is_init_lable = False 
 #label_show显示的累加 
 font = e.widget['text'] 
 self.lable_show['text'] += font 
 #异常捕获 
 try: 
  #判定运算符号重复的时候,使用最后输入的符号 
  if self.lable_show['text'][-1] in ['+','-','*','/'] and self.lable_show['text'][-2] in ['+','-','*','/']: 
  header = self.lable_show['text'][:-2] 
  footer = self.lable_show['text'][-1] 
  self.lable_show['text'] = header+footer 
 except: 
  pass 
 
 #普通计算 
 if e.widget['text'] == '=': 
  try: 
  res = eval(self.lable_show['text'][:-1]) 
  #print(res) 
  #小数点取到9位 
  self.lable_show['text'] = str(round(float(res), 5)) 
  self.isinit = True 
  except ZeroDivisionError: 
  #除法时,除数不能为0 
  self.mbox.showerror(message='除法计算时!除数不能为0!') 
  except: 
  self.mbox.showerror(message='算式有误') 
 #取消当前输入的字符 
 if e.widget['text'] == 'C': 
  cancel_res = self.lable_show['text'][:-2] 
  self.lable_show['text'] = cancel_res 
 
 
#实例化计算器对象 
wiz = Counter()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬取网易云音乐热门评论
Mar 31 Python
Python中的默认参数实例分析
Jan 29 Python
python数字图像处理之高级形态学处理
Apr 27 Python
基于pip install django失败时的解决方法
Jun 12 Python
Python 实现数据结构中的的栈队列
May 16 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 Python
python双向链表实例详解
May 25 Python
Python实现简单遗传算法(SGA)
Jan 29 #Python
Python之reload流程实例代码解析
Jan 29 #Python
Python中的默认参数实例分析
Jan 29 #Python
Python使用遗传算法解决最大流问题
Jan 29 #Python
Python subprocess模块详细解读
Jan 29 #Python
python微信跳一跳游戏辅助代码解析
Jan 29 #Python
Python面向对象之继承代码详解
Jan 29 #Python
You might like
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
Bootstrap基础学习
2015/06/16 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
JS实现吸顶特效
2020/01/08 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
python 实现的车牌识别项目
2021/01/25 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
德国电子商城:ComputerUniverse
2017/04/21 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
合作协议书怎么写
2014/04/18 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL