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实现简易版计算器相关推荐

  1. python 正则的使用 —— 编写一个简易的计算器

    python 正则的使用 -- 编写一个简易的计算器 在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * ...

  2. js计算器代码加减乘除_如何用jQuery做一个简易版计算器

    经过几个小时地敲敲打打,终于把这一部分的代码完成了. 这类问题的难点不在于布局,而是如何恰当地使用jQuery达成计算.交互的目的,比如储存.显示数值,数据类型的转换等. 在听老师讲课之前的我,思路是 ...

  3. 小学生的简易版计算器

    今天,我照常打开C++,开始用switch语句编程序,突然,我想出了做计算器的念头,于是,我就做出了它--超级简易的计算器,下面是代码: #include<bits/stdc++.h> u ...

  4. python实现淘宝定时抢购简易版

    python实现淘宝定时抢购简易版 前几天自己写了一个淘宝定时秒杀的代码,简易版的,原理很简单,首先获取淘宝服务器的时间,然后再通过模拟点击实现抢购,仅供娱乐. 获取淘宝服务器时间部分: getTim ...

  5. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...

  6. python简易版成绩管理系统_Python 实现简易版成绩管理系统

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...

  7. python开发音乐播放器教程_python开发简易版在线音乐播放器示例代码

    在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数 ...

  8. python实现链表的删除_Python 实现简易版成绩管理系统

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...

  9. python俄罗斯方块实训报告_Python_简易版俄罗斯方块

    简易版俄罗斯方块源码 import pygame,sys,random,time block_initial_position,score,times,gameover,press,all_block ...

  10. python实现简单计算器_Python实现的简单计算器功能详解

    本文实例讲述了Python实现的简单计算器功能.分享给大家供大家参考,具体如下: 使用python编写一款简易的计算器 计算器效果图 首先搭建计算器的面板: 计算器面板结构 建造一个继承于wx.Fra ...

最新文章

  1. hdu oj1092题解
  2. 美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养
  3. 中考计算机考试作文,中考理化实验计算机考试作文
  4. Oracle触发器简单使用记录
  5. 非阻塞模式WinSock编程入门
  6. XCTF-MISC-新手区-base64stego
  7. 2020蓝桥杯省赛---java---B---5( REPEAT 程序)
  8. 分享一个有趣的网站“让我帮你百度一下“
  9. C++(STL):33---hash_set、hash_map、hash_multiset、hash_multimap源码剖析
  10. 【OpenCV】OpenCV函数精讲之 -- namedWindow()函数
  11. 赶紧收藏!UI设计师必须知道的命名规范
  12. 03-树3 Tree Traversals Again
  13. Emacs Lisp程序单步调试
  14. 利用pca分析fmri的生理噪声
  15. turboc7运行C测试 vc6.0测试
  16. 2016 0CTF rsa
  17. qq离线文件服务器是怎么实现秒传,一招教你提高QQ文件传输速度的方法
  18. Java学习第一周总结
  19. NetSuite 合并报表之外币折算差异(CTA)
  20. element-plus ui表格表头筛选功能

热门文章

  1. 找出一个字符串中的数字
  2. 页面回发(PostBack)后,滚动条位置保持不变
  3. 开机后网络连接迟迟没有反映是怎么回事?
  4. ThreadPoolExecutor源码学习(一) -核心属性及应用
  5. sftp本地上传和远程下载
  6. DOM—外部插入.after()、.before()、.insertAfter()和.insertBefore()与内部插入.prepend()和.prependTo()...
  7. Linux运维常用脚本整理
  8. YUM安装部署LAMP环境
  9. css大会站点顶部的一个特效
  10. mysqldump批量备份恢复数据脚本