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中的ConfigParser模块使用详解
May 04 Python
Python中List.index()方法的使用教程
May 20 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
Python的装饰器使用详解
Jun 26 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
什么是python的必选参数
Jun 21 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 Python
PyQt QMainWindow的使用示例
Mar 24 Python
深入理解python多线程编程
Apr 18 Python
python解析json数据
Apr 29 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中使用临时表查询数据的一个例子
2013/02/03 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
开办饭店创业计划书
2013/12/28 职场文书
报社实习生自荐信
2014/01/24 职场文书
教育学习自我评价
2014/02/03 职场文书
一年级班主任感言
2014/03/08 职场文书
投资入股合作协议书
2014/10/28 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
详解在OpenCV中如何使用图像像素
2022/03/03 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python