基于wxpython开发的简单gui计算器实例


Posted in Python onMay 30, 2015

本文实例讲述了基于wxpython开发的简单gui计算器。分享给大家供大家参考。具体如下:

# wxCalc1 a simple GUI calculator using wxPython
# created with the Boa Constructor which generates all the GUI components
# all I had to do is add some code for each button click event
# Boa free from: http://boa-constructor.sourceforge.net/
# note that  boa-constructor-0.3.1.win32.exe
# still uses  wxPythonWIN32-2.4.2.4-Py23.exe
# but is expected to work with wxPython version 2.5 soon
# tested with Python23  vegaseat  26feb2005
from wxPython.wx import *
# some Boa generated global IDs ...
[wxID_WXFRAME1, wxID_WXFRAME1BTN0, wxID_WXFRAME1BTN1, wxID_WXFRAME1BTN2,
 wxID_WXFRAME1BTN3, wxID_WXFRAME1BTN4, wxID_WXFRAME1BTN5, wxID_WXFRAME1BTN6,
 wxID_WXFRAME1BTN7, wxID_WXFRAME1BTN8, wxID_WXFRAME1BTN9,
 wxID_WXFRAME1BTNCLEAR, wxID_WXFRAME1BTNDIV, wxID_WXFRAME1BTNDOT,
 wxID_WXFRAME1BTNEQUAL, wxID_WXFRAME1BTNMINUS, wxID_WXFRAME1BTNMULTI,
 wxID_WXFRAME1BTNPLUS, wxID_WXFRAME1EDIT,
] = map(lambda _init_ctrls: wxNewId(), range(19))
class wxFrame1(wxFrame):
#startregion, below this marker is Boa generated code do not edit!!!
  def _init_ctrls(self, prnt):
    # generated method, don't edit
    wxFrame.__init__(self, id=wxID_WXFRAME1, name='', parent=prnt,
       pos=wxPoint(306, 270), size=wxSize(266, 265),
       style=wxDEFAULT_FRAME_STYLE, title='Calculator1')
    self.SetClientSize(wxSize(258, 225))
    self.SetBackgroundColour(wxColour(0, 128, 0))
    self.btn1 = wxButton(id=wxID_WXFRAME1BTN1, label='1', name='btn1',
       parent=self, pos=wxPoint(16, 136), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn1, wxID_WXFRAME1BTN1, self.OnBtn1Button)
    self.btn2 = wxButton(id=wxID_WXFRAME1BTN2, label='2', name='btn2',
       parent=self, pos=wxPoint(64, 136), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn2, wxID_WXFRAME1BTN2, self.OnBtn2Button)
    self.btn3 = wxButton(id=wxID_WXFRAME1BTN3, label='3', name='btn3',
       parent=self, pos=wxPoint(112, 136), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn3, wxID_WXFRAME1BTN3, self.OnBtn3Button)
    self.btn4 = wxButton(id=wxID_WXFRAME1BTN4, label='4', name='btn4',
       parent=self, pos=wxPoint(16, 96), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn4, wxID_WXFRAME1BTN4, self.OnBtn4Button)
    self.btn5 = wxButton(id=wxID_WXFRAME1BTN5, label='5', name='btn5',
       parent=self, pos=wxPoint(64, 96), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn5, wxID_WXFRAME1BTN5, self.OnBtn5Button)
    self.btn6 = wxButton(id=wxID_WXFRAME1BTN6, label='6', name='btn6',
       parent=self, pos=wxPoint(112, 96), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn6, wxID_WXFRAME1BTN6, self.OnBtn6Button)
    self.btn7 = wxButton(id=wxID_WXFRAME1BTN7, label='7', name='btn7',
       parent=self, pos=wxPoint(16, 56), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn7, wxID_WXFRAME1BTN7, self.OnBtn7Button)
    self.btn8 = wxButton(id=wxID_WXFRAME1BTN8, label='8', name='btn8',
       parent=self, pos=wxPoint(64, 56), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn8, wxID_WXFRAME1BTN8, self.OnBtn8Button)
    self.btn9 = wxButton(id=wxID_WXFRAME1BTN9, label='9', name='btn9',
       parent=self, pos=wxPoint(112, 56), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn9, wxID_WXFRAME1BTN9, self.OnBtn9Button)
    self.btn0 = wxButton(id=wxID_WXFRAME1BTN0, label='0', name='btn0',
       parent=self, pos=wxPoint(16, 176), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btn0, wxID_WXFRAME1BTN0, self.OnBtn0Button)
    self.btnDot = wxButton(id=wxID_WXFRAME1BTNDOT, label='.', name='btnDot',
       parent=self, pos=wxPoint(64, 176), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btnDot, wxID_WXFRAME1BTNDOT, self.OnBtnDotButton)
    self.btnEqual = wxButton(id=wxID_WXFRAME1BTNEQUAL, label='=',
       name='btnEqual', parent=self, pos=wxPoint(112, 176),
       size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btnEqual, wxID_WXFRAME1BTNEQUAL, self.OnBtnEqualButton)
    self.edit = wxTextCtrl(id=wxID_WXFRAME1EDIT, name='edit', parent=self,
       pos=wxPoint(16, 16), size=wxSize(224, 24), style=0, value='')
    self.btnPlus = wxButton(id=wxID_WXFRAME1BTNPLUS, label='+',
       name='btnPlus', parent=self, pos=wxPoint(160, 56), size=wxSize(32,
       32), style=0)
    EVT_BUTTON(self.btnPlus, wxID_WXFRAME1BTNPLUS, self.OnBtnPlusButton)
    self.btnMinus = wxButton(id=wxID_WXFRAME1BTNMINUS, label='-',
       name='btnMinus', parent=self, pos=wxPoint(160, 96),
       size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btnMinus, wxID_WXFRAME1BTNMINUS, self.OnBtnMinusButton)
    self.btnMulti = wxButton(id=wxID_WXFRAME1BTNMULTI, label='*',
       name='btnMulti', parent=self, pos=wxPoint(160, 136),
       size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btnMulti, wxID_WXFRAME1BTNMULTI, self.OnBtnMultiButton)
    self.btnDiv = wxButton(id=wxID_WXFRAME1BTNDIV, label='/', name='btnDiv',
       parent=self, pos=wxPoint(160, 176), size=wxSize(32, 32), style=0)
    EVT_BUTTON(self.btnDiv, wxID_WXFRAME1BTNDIV, self.OnBtnDivButton)
    self.btnClear = wxButton(id=wxID_WXFRAME1BTNCLEAR, label='C',
       name='btnClear', parent=self, pos=wxPoint(208, 56),
       size=wxSize(32, 32), style=0)
    self.btnClear.SetToolTipString('btnClear')
    EVT_BUTTON(self.btnClear, wxID_WXFRAME1BTNCLEAR, self.OnBtnClearButton)
  def __init__(self, parent):
    self._init_ctrls(parent)
#endregion, above this marker is Boa generated code, do not edit!!!
# now respond to all the button click events ...
  def OnBtn0Button(self, event):
    val = '0'
    # get existing edit box text
    txt = self.edit.GetValue()
    # append text
    txt = txt + val
    # update edit box text
    self.edit.SetValue(txt)
  def OnBtn1Button(self, event):
    val = '1'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn2Button(self, event):
    val = '2'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn3Button(self, event):
    val = '3'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn4Button(self, event):
    val = '4'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
    
  def OnBtn5Button(self, event):
    val = '5'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn6Button(self, event):
    val = '6'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn7Button(self, event):
    val = '7'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn8Button(self, event):
    val = '8'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtn9Button(self, event):
    val = '9'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtnDotButton(self, event):
    val = '.'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtnEqualButton(self, event):
    txt = self.edit.GetValue()
    # needs to contain a float so eg. 3/5 is 3/5.0
    # otherwise division 3/5 would result in zero
    if '/' in txt:
      if '.' not in txt:
        txt = txt + '.0'
    # now evaluate the math string
    txt = repr(eval(txt))
    # and show result in edit box
    self.edit.SetValue(txt)
  def OnBtnPlusButton(self, event):
    val = '+'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtnMinusButton(self, event):
    val = '-'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtnMultiButton(self, event):
    val = '*'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtnDivButton(self, event):
    val = '/'
    txt = self.edit.GetValue()
    txt = txt + val
    self.edit.SetValue(txt)
  def OnBtnClearButton(self, event):
    self.edit.SetValue('')
# -------------------- end of class wxFrame1 ----------------------
def create(parent):
  return wxFrame1(parent)
class BoaApp(wxApp):
  def OnInit(self):
    wxInitAllImageHandlers()
    self.main = create(None)
    self.main.Show()
    self.SetTopWindow(self.main)
    return True
def main():
  application = BoaApp(0)
  application.MainLoop()
if __name__ == '__main__':
  main()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
浅析Python中return和finally共同挖的坑
Aug 18 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
用python处理MS Word的实例讲解
May 08 Python
Python多项式回归的实现方法
Mar 11 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
Django中的静态文件管理过程解析
Aug 01 Python
详解Python3定时器任务代码
Sep 23 Python
利用keras加载训练好的.H5文件,并实现预测图片
Jan 24 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
Python使用configparser库读取配置文件
Feb 22 Python
Python无损压缩图片的示例代码
Aug 06 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 Python
python图像处理之镜像实现方法
May 30 #Python
python图像处理之反色实现方法
May 30 #Python
python中字典(Dictionary)用法实例详解
May 30 #Python
python集合用法实例分析
May 30 #Python
基于wxpython实现的windows GUI程序实例
May 30 #Python
python简单实现旋转图片的方法
May 30 #Python
Python实现控制台输入密码的方法
May 29 #Python
You might like
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
JavaScript基本对象
2007/01/11 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
python如何删除文件中重复的字段
2019/07/16 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
python tkinter组件摆放方式详解
2019/09/16 Python
python获取array中指定元素的示例
2019/11/26 Python
使用python模拟高斯分布例子
2019/12/09 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
求职者应聘的自我评价
2013/10/16 职场文书
劲霸男装广告词
2014/03/21 职场文书
社区居务公开实施方案
2014/03/27 职场文书
青安岗事迹材料
2014/05/14 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
springboot+VUE实现登录注册
2021/05/27 Vue.js