Python实现的计算器功能示例


Posted in Python onApril 26, 2018

本文实例讲述了Python实现的计算器功能。分享给大家供大家参考,具体如下:

源码:

# -*- coding:utf-8 -*-
#! python2
from tkinter import *
__author__ = 'tianshl'
__date__ = '2017/10/16'
class Application(Frame):
 def __init__(self):
  Frame.__init__(self)
  self.grid()
  self.mem = ''    # 内存中的数据
  self.opt = ''    # 操作符
  self.display = StringVar() # 显示的数据
  self.display.set('0')  # 初始值
  self.need_cls = False  # 是否需要清屏
  self.create_widgets()
 # 清空
 def clear(self):
  self.mem = ''
  self.display.set('0')
 # 取反
 def negative(self):
  self.display.set(eval('-' + self.display.get()))
 # 四则运算
 def option(self, opt):
  if not self.need_cls:
   self.calculate()
  self.opt = opt
  self.need_cls = True
  self.mem = self.display.get()
 # 计算结果
 def calculate(self):
  if self.opt:
   try:
    self.display.set(eval(self.mem + self.opt + self.display.get()))
   except Exception:
    self.display.set('错误')
    self.need_cls = True
   self.opt = ''
   self.mem = ''
 # 百分比
 def percent(self):
  base = float(self.mem or 1) / 100
  display = eval('{}*{}'.format(self.display.get(), base))
  int_display = int(display)
  display = int_display if display == int_display else display
  self.display.set(display)
  self.need_cls = True
 # 输入
 def input(self, key):
  if self.need_cls:
   self.display.set('0')
   self.need_cls = False
  display = self.display.get()
  if display == '0' and key != '.':
   self.display.set(key)
  else:
   if '.' in display and key == '.':
    return
   self.display.set(display + key)
 # 创建组件
 def create_widgets(self):
  # 显示框
  Entry(self, textvariable=self.display, state="readonly", width=35).grid(
   row=0, column=0, columnspan=4)
  # 键盘
  keyboards = [
   ['C', '+/-', '%', '/'], 
   ['7', '8', '9', '*'], 
   ['4', '5', '6', '-'],
   ['1', '2', '3', '+'],
   ['0', '.', '=']
  ]
  for row, keys in enumerate(keyboards):
   row_num = 3 + row
   for col, key in enumerate(keys):
    if key == 'C':
     command = self.clear
    elif key == '+/-':
     command = self.negative
    elif key == '%':
     command = self.percent
    elif key in ['+', '-', '*', '/']:
     command = lambda s=key: self.option(s)
    elif key == '=':
     command = self.calculate
    else:
     command = lambda s=key: self.input(s)
    bt = Button(self, text=key, command=command, width=6)
    bt.grid(row=row_num, column=col)
app = Application()
# 设置窗口标题:
app.master.title('3water.com - 计算器')
# 设置窗口尺寸/位置
app.master.geometry("326x170+200+200")
# 设置窗口不可变
app.master.resizable(width=False, height=False)
# 主消息循环:
app.mainloop()

运行效果:

Python实现的计算器功能示例

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.3water.com/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现简单过滤文本段的方法
May 24 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
Python requests库用法实例详解
Aug 14 Python
详解python分布式进程
Oct 08 Python
python DataFrame 取差集实例
Jan 30 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Python进程间通信multiprocess代码实例
Mar 18 Python
使用K.function()调试keras操作
Jun 17 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
python email smtplib模块发送邮件代码实例
Apr 26 #Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 #Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 #Python
Python实现按中文排序的方法示例
Apr 25 #Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 #Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 #Python
PyQt5实现拖放功能
Apr 25 #Python
You might like
PHP把小数转成整数3种方法
2014/06/30 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
python中的列表推导浅析
2014/04/26 Python
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python高阶爬虫实战分析
2018/07/29 Python
Python中的元组介绍
2019/01/28 Python
python多线程并发及测试框架案例
2019/10/15 Python
python多进程使用函数封装实例
2020/05/02 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
向领导表决心的话
2014/03/11 职场文书
最常使用的求职信
2014/05/25 职场文书
任命书范本大全
2014/06/06 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
优秀班组事迹材料
2014/12/24 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
会议通知格式范文
2015/04/15 职场文书
python使用BeautifulSoup 解析HTML
2022/04/24 Python