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进行稳定可靠的文件操作详解
Dec 31 Python
浅谈python字符串方法的简单使用
Jul 18 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
简单实现Python爬取网络图片
Apr 01 Python
numpy.linspace函数具体使用详解
May 27 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
python关于矩阵重复赋值覆盖问题的解决方法
Jul 19 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Python调用shell cmd方法代码示例解析
Jun 18 Python
Python+Appium实现自动抢微信红包
May 21 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
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python完全新手教程
2007/02/08 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
django Serializer序列化使用方法详解
2018/10/16 Python
python实现邮件发送功能
2019/08/10 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
Europcar比利时:租车
2019/08/26 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
2014年小学教研工作总结
2014/12/06 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
调解书格式范本
2015/05/20 职场文书
科技馆观后感
2015/06/08 职场文书
预备党员入党感言
2015/08/01 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
Pygame Time时间控制的具体使用详解
2021/11/17 Python