python编写计算器功能


Posted in Python onOctober 25, 2019

本文实现用python编写一个带界面的计算器小程序,当然这个计算器功能很简单,只能进行一些简单的数学运算,很适合初学者,希望能给大家带来一些启发

实验前提

  • 因为是带图形界面的,所以用的版本是在windows10上安装的Python 3.7.4
  • 程序里调用了tkinter模块包,有些环境需要手动安装这个包,安装步骤自行百度
  • 我这个是在直接windows应用商店装的,已经自动导入tkinter包,建议使用此方法、

程序代码

# coding: utf-8
# 将tkinter改为Tkinter兼容Python 2.x
from tkinter import *
class App:
 def __init__(self, master):
  self.master = master
  self.initWidgets()
  self.hi = None
 def initWidgets(self):
  # 创建一个输入组件
  self.show = Label(relief=SUNKEN, font=('Courier New', 24),\
   width=23, bg='white', anchor=W)
  # 对该输入组件使用Pack布局,放在容器顶部
  self.show.pack(side=TOP, pady=10)
  p = Frame(self.master)
  p.pack(side=TOP)
  # 定义字符串的元组
  names = ("+", "1" , "2" , "3" , "↺" 
   ,"-", "4" , "5" , "6" , "**" , "*", "7" , "8"
   , "9", "//", "/" , "." , "0" , "%", "=")
  # 遍历字符串元组
  for i in range(len(names)):
   # 创建Button,将Button放入p组件中
   b = Button(p, text=names[i], font=('Verdana', 20), width=5)
   b.grid(row=i // 5, column=i % 5)
   # 为鼠标左键的单击事件绑定事件处理方法
   b.bind('<Button-1>', self.click)
   # 为鼠标左键的双击事件绑定事件处理方法
   if b['text'] == '↺': b.bind('<Button-1>', self.clean)
  # 定义一个记录输入数字次数的变量
  self.i = 0
 def click(self, event):
  # 如果用户单击的是数字键或点号
  if(event.widget['text'] in ('0', '1', '2', '3',\
   '4', '5', '6', '7', '8', '9', '.')):
   # 判断self.i是否为0,0的话清空show['text']的值
   if self.i == 0 :
    self.show['text'] = ''
   self.show['text'] = self.show['text'] + event.widget['text']
   self.i = self.i + 1
   print(self.i)
  # 如果用户单击了运算符
  elif(event.widget['text'] in ('+', '-', '*', '/', '%', '**', '//')):
   # 把输入的数字与输入的字符相结合,组成一个数学运算式
   self.show['text'] = self.show['text'] + event.widget['text']
  elif(event.widget['text'] == '=' and self.show['text'] is not None):
   # 赋值给self.hi
   self.hi = self.show['text']
   # 其实这一步可以不要,主要作用是在调试时可以在后台看输入的数据
   print(self.hi)
   # 使用eval函数计算表达式的值
   self.show['text'] = str(eval(self.hi))
   self.hi = None
   self.i = 0
 # 点击↺(恢复)按钮时,程序清空计算结果、将表达式设为None
 def clean(self, event):
  self.hi = None
  self.show['text'] = ''
root = Tk()
root.title("简单科学计算器")
App(root)
root.mainloop()

小知识:

python编写计算器功能

效果如图

python编写计算器功能

结语:

如果有不理解的地方欢迎留言

本文参考疯狂python讲义

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现生成简单的Makefile文件代码示例
Mar 10 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
Python标准库inspect的具体使用方法
Dec 06 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
详解python之协程gevent模块
Jun 14 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
使用python实现mqtt的发布和订阅
May 05 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
python使用torch随机初始化参数
Mar 22 Python
Python实现快速排序的方法详解
Oct 25 #Python
python实现超市商品销售管理系统
Oct 25 #Python
Python列表元素常见操作简单示例
Oct 25 #Python
python实现超市管理系统(后台管理)
Oct 25 #Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 #Python
python+mysql实现个人论文管理系统
Oct 25 #Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 #Python
You might like
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP中的Memcache详解
2014/04/05 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
Sample script that deletes a SQL Server database
2007/06/16 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
python 全文检索引擎详解
2017/04/25 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python属于跨平台语言码
2020/06/09 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
Joules美国官网:出色的英国风格
2017/10/30 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
学生自我评价范文
2014/02/02 职场文书
报告会主持词
2014/04/02 职场文书
小学优秀学生评语
2014/12/29 职场文书
二审答辩状格式
2015/05/22 职场文书
对公司的意见和建议
2015/06/04 职场文书