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为tornado添加recaptcha验证码功能
Feb 26 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
python定向爬取淘宝商品价格
Feb 27 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
python写一个随机点名软件的实例
Nov 28 Python
pytorch 实现打印模型的参数值
Dec 30 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
python能做哪些生活有趣的事情
Sep 09 Python
python如何运行js语句
Sep 09 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
jQuery中:input选择器用法实例
2015/01/03 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python识别html主要文本框过程解析
2020/02/18 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
毕业学生推荐信
2013/12/01 职场文书
购房意向书范本
2014/04/01 职场文书
10的分与合教学反思
2014/04/30 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
市场部岗位职责
2015/02/12 职场文书
2015年计划生育责任书
2015/05/08 职场文书
起诉书范文
2015/05/20 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
如何使JavaScript休眠或等待
2021/04/27 Javascript
Nginx限流和黑名单配置
2022/05/20 Servers