python实现简易版计算器


Posted in Python onJune 22, 2020

学了一周的Python,这篇文章算是为这段时间自学做的小总结。

一、Python简介

Python是一门十分优美的脚本语言,如果学过java、c++那入门Python是非常简单的。Python具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写。

二、Python版计算器的实现

工具准备:

1. Python2.7
2. wxPython
3. wxGlade界面编辑工具
4. pyCharm

具体配置什么的我就不说了,网上有很多。Python的GUI开发库有很多,这里我们使用wxPython。用wxGlade编辑界面,wxGlade是一款很好用的GUI编辑工具,它最大的优点是能自动生成编辑好的图形界面的代码。

这里主要介绍几点:

wx.TextCtrl(文本输入控件),这个作为计算器的显示屏,点击数字时用AppendText方法将数字添加至文本末尾,要取出数字时用GetValue方法,点击运算符时要将文本框中的数字清空(先存储)用Clear方法然后还有将操作符保存,点击等号后要将第二个操作数存储,然后用int方法将字符串转换为数字,计算后用SetValue方法将结果送入文本框,具体代码如下:

import wx 
 
# begin wxGlade: extracode 
# end wxGlade 
 
 
class MyFrame(wx.Frame): 
 def __init__(self, *args, **kwds): 
 # begin wxGlade: MyFrame.__init__ 
 kwds["style"] = wx.DEFAULT_FRAME_STYLE 
 wx.Frame.__init__(self, *args, **kwds) 
 self.text_ctrl_1 = wx.TextCtrl(self, -1, "",style=wx.TE_READONLY) 
 self.button_37 = wx.Button(self, -1, "1") 
 self.button_38 = wx.Button(self, -1, "2") 
 self.button_39 = wx.Button(self, -1, "3") 
 self.button_40 = wx.Button(self, -1, "+") 
 self.button_41 = wx.Button(self, -1, "4") 
 self.button_42 = wx.Button(self, -1, "5") 
 self.button_43 = wx.Button(self, -1, "6") 
 self.button_44 = wx.Button(self, -1, "-") 
 self.button_46 = wx.Button(self, -1, "7") 
 self.button_45 = wx.Button(self, -1, "8") 
 self.button_47 = wx.Button(self, -1, "9") 
 self.button_48 = wx.Button(self, -1, "x") 
 self.button_49 = wx.Button(self, -1, "C") 
 self.button_50 = wx.Button(self, -1, "0") 
 self.button_51 = wx.Button(self, -1, "=") 
 self.button_52 = wx.Button(self, -1, "/") 
 
 self.__set_properties() 
 self.__do_layout() 
 
 self.Bind(wx.EVT_BUTTON, self.bu1, self.button_37) 
 self.Bind(wx.EVT_BUTTON, self.bu2, self.button_38) 
 self.Bind(wx.EVT_BUTTON, self.bu3, self.button_39) 
 self.Bind(wx.EVT_BUTTON, self.bu_plus, self.button_40) 
 self.Bind(wx.EVT_BUTTON, self.bu4, self.button_41) 
 self.Bind(wx.EVT_BUTTON, self.bu5, self.button_42) 
 self.Bind(wx.EVT_BUTTON, self.bu6, self.button_43) 
 self.Bind(wx.EVT_BUTTON, self.bu_min, self.button_44) 
 self.Bind(wx.EVT_BUTTON, self.bu7, self.button_46) 
 self.Bind(wx.EVT_BUTTON, self.bu8, self.button_45) 
 self.Bind(wx.EVT_BUTTON, self.bu9, self.button_47) 
 self.Bind(wx.EVT_BUTTON, self.bu_mul, self.button_48) 
 self.Bind(wx.EVT_BUTTON, self.bu_clear, self.button_49) 
 self.Bind(wx.EVT_BUTTON, self.bu0, self.button_50) 
 self.Bind(wx.EVT_BUTTON, self.bu_result, self.button_51) 
 self.Bind(wx.EVT_BUTTON, self.bu_chu, self.button_52) 
 # end wxGlade 
 self.Show(True) 
 
 def __set_properties(self): 
 # begin wxGlade: MyFrame.__set_properties 
 self.SetTitle("Python Calculater by CYG") 
 self.text_ctrl_1.SetMinSize((400, 50)) 
 self.button_37.SetMinSize((100, 50)) 
 self.button_38.SetMinSize((100, 50)) 
 self.button_39.SetMinSize((100, 50)) 
 self.button_40.SetMinSize((100, 50)) 
 self.button_41.SetMinSize((100, 50)) 
 self.button_42.SetMinSize((100, 50)) 
 self.button_43.SetMinSize((100, 50)) 
 self.button_44.SetMinSize((100, 50)) 
 self.button_46.SetMinSize((100, 50)) 
 self.button_45.SetMinSize((100, 50)) 
 self.button_47.SetMinSize((100, 50)) 
 self.button_48.SetMinSize((100, 50)) 
 self.button_49.SetMinSize((100, 50)) 
 self.button_50.SetMinSize((100, 50)) 
 self.button_51.SetMinSize((100, 50)) 
 self.button_52.SetMinSize((100, 50)) 
 # end wxGlade 
 
 def __do_layout(self): 
 # begin wxGlade: MyFrame.__do_layout 
 sizer_2 = wx.BoxSizer(wx.VERTICAL) 
 sizer_3 = wx.BoxSizer(wx.VERTICAL) 
 grid_sizer_1 = wx.GridSizer(4, 4, 0, 0) 
 sizer_3.Add(self.text_ctrl_1, 0, 0, 0) 
 grid_sizer_1.Add(self.button_37, 0, 0, 0) 
 grid_sizer_1.Add(self.button_38, 0, 0, 0) 
 grid_sizer_1.Add(self.button_39, 0, 0, 0) 
 grid_sizer_1.Add(self.button_40, 0, 0, 0) 
 grid_sizer_1.Add(self.button_41, 0, 0, 0) 
 grid_sizer_1.Add(self.button_42, 0, 0, 0) 
 grid_sizer_1.Add(self.button_43, 0, 0, 0) 
 grid_sizer_1.Add(self.button_44, 0, 0, 0) 
 grid_sizer_1.Add(self.button_46, 0, 0, 0) 
 grid_sizer_1.Add(self.button_45, 0, 0, 0) 
 grid_sizer_1.Add(self.button_47, 0, 0, 0) 
 grid_sizer_1.Add(self.button_48, 0, 0, 0) 
 grid_sizer_1.Add(self.button_49, 0, 0, 0) 
 grid_sizer_1.Add(self.button_50, 0, 0, 0) 
 grid_sizer_1.Add(self.button_51, 0, 0, 0) 
 grid_sizer_1.Add(self.button_52, 0, 0, 0) 
 sizer_3.Add(grid_sizer_1, 1, wx.EXPAND, 0) 
 sizer_2.Add(sizer_3, 1, wx.EXPAND, 0) 
 self.SetSizer(sizer_2) 
 sizer_2.Fit(self) 
 self.Layout() 
 # end wxGlade 
 
 def bu1(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("1") 
 event.Skip() 
 
 def bu2(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("2") 
 event.Skip() 
 
 def bu3(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("3") 
 event.Skip() 
 
 def bu_plus(self, event): # wxGlade: MyFrame.<event_handler> 
 self.num1=self.text_ctrl_1.GetValue() 
 self.op="+" 
 self.text_ctrl_1.Clear() 
 event.Skip() 
 
 def bu4(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("4") 
 event.Skip() 
 
 def bu5(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("5") 
 event.Skip() 
 
 def bu6(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("6") 
 event.Skip() 
 
 def bu_min(self, event): # wxGlade: MyFrame.<event_handler> 
 self.num1=self.text_ctrl_1.GetValue() 
 self.op="-" 
 self.text_ctrl_1.Clear() 
 event.Skip() 
 
 def bu7(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("7") 
 event.Skip() 
 
 def bu8(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("8") 
 event.Skip() 
 
 def bu9(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("9") 
 event.Skip() 
 
 def bu_mul(self, event): # wxGlade: MyFrame.<event_handler> 
 self.num1=self.text_ctrl_1.GetValue() 
 self.op="x" 
 self.text_ctrl_1.Clear() 
 event.Skip() 
 
 def bu_clear(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.Clear() 
 event.Skip() 
 
 def bu0(self, event): # wxGlade: MyFrame.<event_handler> 
 self.text_ctrl_1.AppendText("0") 
 event.Skip() 
 
 def bu_chu(self, event): # wxGlade: MyFrame.<event_handler> 
 self.num1=self.text_ctrl_1.GetValue() 
 self.op="/" 
 self.text_ctrl_1.Clear() 
 event.Skip() 
 
 def bu_result(self, event): # wxGlade: MyFrame.<event_handler> 
 self.num2=self.text_ctrl_1.GetValue() 
 num1=int(self.num1) 
 num2=int(self.num2) 
 if self.op=="+": 
 self.text_ctrl_1.SetValue(str(num1+num2)) 
 elif self.op=="-": 
 self.text_ctrl_1.SetValue(str(num1-num2)) 
 elif self.op=="x": 
 self.text_ctrl_1.SetValue(str(num1*num2)) 
 elif self.op=="/": 
 self.text_ctrl_1.SetValue(str(num1/num2)) 
 event.Skip() 
 
 
# end of class MyFrame 
if __name__ == "__main__": 
 
 app=wx.App(False) 
 myframe=MyFrame(None) 
 app.MainLoop()

按钮的ID,名称什么的我基本都是用wxGlade自动生成的。
没有做什么美化,只是为了练练手,给张图:

python实现简易版计算器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现解数独程序代码
Apr 12 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
python图像处理入门(一)
Apr 04 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
python实现桌面托盘气泡提示
Jul 29 Python
python防止随意修改类属性的实现方法
Aug 21 Python
python实现批量修改文件名
Mar 23 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
python列表的增删改查实例代码
Jan 30 #Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 #Python
Python Tkinter实现简易计算器功能
Jan 30 #Python
python使用tkinter实现简单计算器
Jan 30 #Python
Python实现简单遗传算法(SGA)
Jan 29 #Python
Python之reload流程实例代码解析
Jan 29 #Python
Python中的默认参数实例分析
Jan 29 #Python
You might like
谈谈PHP语法(5)
2006/10/09 PHP
用来给图片加水印的PHP类
2008/04/09 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
名片管理系统python版
2018/01/11 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python多进程重复加载的解决方式
2019/12/13 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
成教毕业生自我鉴定
2013/10/23 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
优秀小学生家长评语
2014/01/30 职场文书
学年个人总结范文
2015/03/05 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
施工现场安全管理制度
2015/08/05 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis