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中的作用域规则详解
Jan 30 Python
使用Python写个小监控
Jan 27 Python
深入理解Django的自定义过滤器
Oct 17 Python
Python AES加密实例解析
Jan 18 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
用python求一重积分和二重积分的例子
Dec 06 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
python中yield的用法详解
Jan 13 Python
python中%格式表达式实例用法
Jun 18 Python
python画条形图的具体代码
Apr 20 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
YII实现分页的方法
2014/07/09 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
微信支付的开发流程详解
2016/09/13 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
JS常见算法详解
2017/02/28 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
老生常谈python中的重载
2018/11/11 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
通过python3实现投票功能代码实例
2019/09/26 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
彩色的翅膀教学反思
2014/04/25 职场文书
基层党员对照检查材料
2014/09/24 职场文书
三方股东合作协议书
2014/10/28 职场文书
个人总结与自我评价
2015/02/14 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
php中pcntl_fork详解
2021/04/01 PHP