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编写一个模仿CPU工作的程序
Apr 16 Python
python中的错误处理
Apr 10 Python
python多线程同步之文件读写控制
Feb 25 Python
python是否适合网页编程详解
Oct 04 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
Python实现GIF图倒放
Jul 16 Python
Python编写单元测试代码实例
Sep 10 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
基于Python实现天天酷跑功能
Jan 06 Python
python实现简单反弹球游戏
Apr 12 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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
Django REST framework视图的用法
2019/01/16 Python
基于python实现查询ip地址来源
2020/06/02 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
问卷调查计划书
2014/01/10 职场文书
元旦晚会邀请函
2014/02/01 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS