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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python中类的继承代码实例
Oct 28 Python
Python迭代和迭代器详解
Nov 10 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
django+mysql的使用示例
Nov 23 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 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
smarty内置函数section的用法
2015/01/22 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
用于table内容排序
2006/07/21 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
详解Django框架中用context来解析模板的方法
2015/07/20 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
python计算日期之间的放假日期
2018/06/05 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python 硬币兑换问题
2019/07/29 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
关于numpy数组轴的使用详解
2019/12/05 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
python实现图片转字符画的完整代码
2021/02/21 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
PHP面试题及答案二
2015/05/23 面试题
设计模式的基本要素是什么
2014/04/21 面试题
保密协议书范本
2014/04/22 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
统计工作个人总结
2015/03/03 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB