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 05 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python Logging 日志记录入门学习
Jun 02 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python爬虫获取百度首页内容教学
Dec 23 Python
详解python持久化文件读写
Apr 06 Python
Python3实现定时任务的四种方式
Jun 03 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
用Python创建简易网站图文教程
Jun 11 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 修改上传文件大小限制实例详解
2016/10/23 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
在python中的socket模块使用代理实例
2014/05/29 Python
python脚本后台执行方式
2019/12/21 Python
Python猴子补丁知识点总结
2020/01/05 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
专升本个人自我评价
2013/12/22 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
三好学生个人总结
2015/02/15 职场文书
大学毕业生个人总结
2015/02/28 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
倡议书的格式写法
2015/04/28 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang