python实现科学计算器_python实现简易版计算器
python实现简易版计算器
来源:中文源码网 浏览: 次 日期:2018年9月2日
【下载文档: python实现简易版计算器.txt 】
(友情提示:右键点上行txt文档名->目标另存为)
python实现简易版计算器 学了一周的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.self.text_ctrl_1.AppendText("1")
event.Skip()
def bu2(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("2")
event.Skip()
def bu3(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("3")
event.Skip()
def bu_plus(self, event): # wxGlade: MyFrame.self.num1=self.text_ctrl_1.GetValue()
self.op="+"
self.text_ctrl_1.Clear()
event.Skip()
def bu4(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("4")
event.Skip()
def bu5(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("5")
event.Skip()
def bu6(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("6")
event.Skip()
def bu_min(self, event): # wxGlade: MyFrame.self.num1=self.text_ctrl_1.GetValue()
self.op="-"
self.text_ctrl_1.Clear()
event.Skip()
def bu7(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("7")
event.Skip()
def bu8(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("8")
event.Skip()
def bu9(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("9")
event.Skip()
def bu_mul(self, event): # wxGlade: MyFrame.self.num1=self.text_ctrl_1.GetValue()
self.op="x"
self.text_ctrl_1.Clear()
event.Skip()
def bu_clear(self, event): # wxGlade: MyFrame.self.text_ctrl_1.Clear()
event.Skip()
def bu0(self, event): # wxGlade: MyFrame.self.text_ctrl_1.AppendText("0")
event.Skip()
def bu_chu(self, event): # wxGlade: MyFrame.self.num1=self.text_ctrl_1.GetValue()
self.op="/"
self.text_ctrl_1.Clear()
event.Skip()
def bu_result(self, event): # wxGlade: MyFrame.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 正则的使用 —— 编写一个简易的计算器
python 正则的使用 -- 编写一个简易的计算器 在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * ...
- js计算器代码加减乘除_如何用jQuery做一个简易版计算器
经过几个小时地敲敲打打,终于把这一部分的代码完成了. 这类问题的难点不在于布局,而是如何恰当地使用jQuery达成计算.交互的目的,比如储存.显示数值,数据类型的转换等. 在听老师讲课之前的我,思路是 ...
- 小学生的简易版计算器
今天,我照常打开C++,开始用switch语句编程序,突然,我想出了做计算器的念头,于是,我就做出了它--超级简易的计算器,下面是代码: #include<bits/stdc++.h> u ...
- python实现淘宝定时抢购简易版
python实现淘宝定时抢购简易版 前几天自己写了一个淘宝定时秒杀的代码,简易版的,原理很简单,首先获取淘宝服务器的时间,然后再通过模拟点击实现抢购,仅供娱乐. 获取淘宝服务器时间部分: getTim ...
- python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!
上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...
- python简易版成绩管理系统_Python 实现简易版成绩管理系统
上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...
- python开发音乐播放器教程_python开发简易版在线音乐播放器示例代码
在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数 ...
- python实现链表的删除_Python 实现简易版成绩管理系统
上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...
- python俄罗斯方块实训报告_Python_简易版俄罗斯方块
简易版俄罗斯方块源码 import pygame,sys,random,time block_initial_position,score,times,gameover,press,all_block ...
- python实现简单计算器_Python实现的简单计算器功能详解
本文实例讲述了Python实现的简单计算器功能.分享给大家供大家参考,具体如下: 使用python编写一款简易的计算器 计算器效果图 首先搭建计算器的面板: 计算器面板结构 建造一个继承于wx.Fra ...
最新文章
- hdu oj1092题解
- 美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养
- 中考计算机考试作文,中考理化实验计算机考试作文
- Oracle触发器简单使用记录
- 非阻塞模式WinSock编程入门
- XCTF-MISC-新手区-base64stego
- 2020蓝桥杯省赛---java---B---5( REPEAT 程序)
- 分享一个有趣的网站“让我帮你百度一下“
- C++(STL):33---hash_set、hash_map、hash_multiset、hash_multimap源码剖析
- 【OpenCV】OpenCV函数精讲之 -- namedWindow()函数
- 赶紧收藏!UI设计师必须知道的命名规范
- 03-树3 Tree Traversals Again
- Emacs Lisp程序单步调试
- 利用pca分析fmri的生理噪声
- turboc7运行C测试 vc6.0测试
- 2016 0CTF rsa
- qq离线文件服务器是怎么实现秒传,一招教你提高QQ文件传输速度的方法
- Java学习第一周总结
- NetSuite 合并报表之外币折算差异(CTA)
- element-plus ui表格表头筛选功能
热门文章
- 找出一个字符串中的数字
- 页面回发(PostBack)后,滚动条位置保持不变
- 开机后网络连接迟迟没有反映是怎么回事?
- ThreadPoolExecutor源码学习(一) -核心属性及应用
- sftp本地上传和远程下载
- DOM—外部插入.after()、.before()、.insertAfter()和.insertBefore()与内部插入.prepend()和.prependTo()...
- Linux运维常用脚本整理
- YUM安装部署LAMP环境
- css大会站点顶部的一个特效
- mysqldump批量备份恢复数据脚本