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 23 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
Python使用指定端口进行http请求的例子
Jul 25 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
python语言是免费还是收费的?
Jun 15 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
Python实现石头剪刀布游戏
Jan 20 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/01 无线电
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python初学者常见错误详解
2019/07/02 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
Python识别html主要文本框过程解析
2020/02/18 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
怎样自定义一个异常类
2016/09/27 面试题
经济职业学院毕业生自荐书
2014/03/17 职场文书
药店采购员岗位职责
2014/09/30 职场文书
公司催款律师函
2015/05/27 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js