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 集合(set)类型的操作——并交差
Jun 30 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
python版本的仿windows计划任务工具
Apr 30 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
python看某个模块的版本方法
Oct 16 Python
python获取地震信息 微信实时推送
Jun 18 Python
Django 用户认证组件使用详解
Jul 23 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
Python竟然能剪辑视频
May 25 Python
基于Python实现一个春节倒计时脚本
Jan 22 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
[转帖]PHP世纪万年历
2006/12/06 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
vue-test-utils初使用详解
2019/05/23 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
python通过opencv实现批量剪切图片
2017/11/13 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python中id函数运行方式
2020/07/03 Python
英国现代市场:ARKET
2019/04/10 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
微信搭讪开场白
2015/05/28 职场文书
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang