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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
介绍Python中的一些高级编程技巧
Apr 02 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python List cmp()知识点总结
Feb 18 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
python标准库OS模块详解
Mar 10 Python
django haystack实现全文检索的示例代码
Jun 24 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
celery在python爬虫中定时操作实例讲解
Nov 27 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 解决substr()截取中文字符乱码问题
2016/07/18 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
jquery实现图片上传前本地预览
2017/04/28 jQuery
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python实现快递价格查询系统
2020/03/03 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
外企测试工程师面试题
2015/02/01 面试题
追悼会子女答谢词
2014/01/28 职场文书
光盘行动倡议书
2014/02/02 职场文书
财务出纳岗位职责
2014/02/03 职场文书
2014年库房工作总结
2014/11/26 职场文书
军事博物馆观后感
2015/06/05 职场文书
八月迷情观后感
2015/06/11 职场文书
企业安全生产检查制度
2015/08/06 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle