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登录QQ邮箱发信的实现代码
Feb 10 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
TensorFlow变量管理详解
Mar 10 Python
python虚拟环境迁移方法
Jan 03 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
为什么称python为胶水语言
Jun 16 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
分享7个 Python 实战项目练习
Mar 03 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通用分页类page.php[仿google分页]
2008/08/31 PHP
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
pandas中的series数据类型详解
2019/07/06 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
Python多线程thread及模块使用实例
2020/04/28 Python
linux面试题参考答案(9)
2015/01/07 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
医学生实习自我鉴定
2013/09/27 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
索赔员岗位职责
2015/02/15 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏