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 with的用法
Aug 22 Python
跟老齐学Python之永远强大的函数
Sep 14 Python
python执行shell获取硬件参数写入mysql的方法
Dec 29 Python
Python模拟百度登录实例详解
Jan 20 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Python切片索引用法示例
May 15 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
深入浅析Python中的迭代器
Jun 04 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
Django认证系统user对象实现过程解析
Mar 02 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
Python hashlib模块的使用示例
Oct 09 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初学者头疼问题总结
2006/10/09 PHP
多重?l件?合查?(二)
2006/10/09 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
基于php无限分类的深入理解
2013/06/02 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
Smarty模板配置实例简析
2019/07/20 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
python连接池实现示例程序
2013/11/26 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
python 自定义对象的打印方法
2019/01/12 Python
python集合常见运算案例解析
2019/10/17 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
JAVA高级程序员面试题
2013/09/06 面试题
行政主管职责范本
2014/03/07 职场文书
老公婚前保证书
2015/02/28 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
pandas中pd.groupby()的用法详解
2022/06/16 Python