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的string模块中的Template类字符串模板用法
Jun 27 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
python如何读写csv数据
Mar 21 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python实现函数极小值
Jul 10 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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 开源框架22个简单简介
2009/08/24 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php生成gif动画的方法
2015/11/05 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
python文件操作相关知识点总结整理
2016/02/22 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python处理PDF与CDF实例
2020/02/26 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
如何使用Pytorch搭建模型
2020/10/26 Python
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
c语言常见笔试题总结
2016/09/05 面试题
外国语学院毕业生自荐信
2013/10/28 职场文书
临床护士自荐信
2014/01/31 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Python进程池与进程锁之语法学习
2022/04/11 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers