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使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 Python
Python获取Linux系统下的本机IP地址代码分享
Nov 07 Python
有趣的python小程序分享
Dec 05 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python实现微信打飞机游戏
Mar 24 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
你需要掌握的20个Python常用技巧
Feb 28 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
咖啡与牛奶
2021/03/03 冲泡冲煮
一个图形显示IP的PHP程序代码
2007/10/19 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Python线程创建和终止实例代码
2018/01/20 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
护士自我鉴定
2013/10/23 职场文书
廉政教育心得体会
2014/01/01 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书