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使用xlrd读取Excel格式文件的方法
Mar 10 Python
Python中join和split用法实例
Apr 14 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
python 基础教程之Map使用方法
Jan 17 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
django queryset相加和筛选教程
May 18 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php blowfish加密解密算法
2016/07/02 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
javascript定时器完整实例
2015/02/10 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
python的id()函数介绍
2013/02/10 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python读大数据txt
2016/03/28 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
django模板语法学习之include示例详解
2017/12/17 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
一年级小学生评语
2014/04/22 职场文书
好学生评语大全
2014/05/05 职场文书
省文明单位申报材料
2014/05/08 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
教师个人考察材料
2014/12/16 职场文书
邀请函怎么写
2015/01/30 职场文书
五一晚会主持词
2015/07/01 职场文书
食品卫生管理制度
2015/08/06 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记