Wxpython零基础制作计算器
本文关于Wxpython零基础利用python3.6在pycharm下制作计算器,文章末尾有免费源代码供下载
以后同步更新到博客园和这个网站,www.empirefree.top, 这个网站备案号没有了,QAQ。
相关环境及实现效果:
wxpython下载:https://www.wxpython.org/pages/downloads/
wxpython学习链接:https://wiki.woodpecker.org.cn/moin/WxPythonInAction
Python:python3.6
Pycharm编译器
实现效果:

整体分3个部分:整体布局,计算操作,其他配置
整体布局
我这里采用wx.Frame加入gridBox和Testprint即可(采用vertical垂直布局,然后利用buttonData加入各类数字就OJBK了,还分配了一下button之间的间距)
#垂直布局并部署表格
wx.Frame.__init__(self, None, -1, 'Empirefree', size=(350, 480), style=wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER | wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX))
panel = wx.Panel(self)
boxsize = wx.BoxSizer(wx.VERTICAL)
gridBox = wx.GridSizer(rows = 6, cols = 5, hgap = 7, vgap = 7)
self.textprint = wx.TextCtrl(panel, -1, '', style=wx.TE_MULTILINE | wx.TE_READONLY)
计算操作
在init初始化中,利用equation等式计算每按一个按钮,若在规定等式内,就开始检测(删除,清空,=,其他),然后进行计算(计算由于等式太多,所以有检测语法不合格的try,except语句,然后就是^符号要和其他要分开):(我TM疯了想用后缀表达式求值,结果我看别人一条语句就计算出来了,惊了!!!),然后清空self.equation(),方便下次输入
def createHandler(self, button, labels):
#根据不同按钮的值调用不同的方法
if labels == '删除':
self.Bind(wx.EVT_BUTTON, self.OnDel, button)
elif labels == '清空':
self.Bind(wx.EVT_BUTTON, self.OnAc, button)
elif labels == '=':
self.Bind(wx.EVT_BUTTON, self.OnTarget, button)
else:
self.Bind(wx.EVT_BUTTON, self.OnAppend, button)
#按钮的相关布局
self.equation = "" #记录等式
self.buttonData = "log2 sqrt ln pi 删除 sin cos tan e / 7 8 9 % * 4 5 6 ^ - 1 2 3 ) + 清空 0 . ( =".split()
self.equation += '\n' + str(target) #计算值
其他配置
弄到这里就差不多了,然后就没有啥了,简单搞了一下背景图片(background.jpg)和图标(ava.ico)就没有了
继续免费分享链接:https://pan.baidu.com/s/1WmGo7Ax4zGCP_fN95t1cgw 提取码: 74nj
Wxpython零基础制作计算器的更多相关文章
- 微信小程序零基础制作指南
第一步 准备工作 下载腾讯官方的微信web开发工具并且安装 第二步 登录已经注册小程序的微信账号并且选择合适的路径新建小程序项目. 新建一个页面文件夹,每一个页面需要一个文件夹,里面包括写逻辑脚本的j ...
- c#制作计算器全过程
前言: 网上看的计算器制作只有代码,没有为全过程下面贴图,所以我在下面主要是贴图,让大家零基础制作计算器. 我的环境是visual studio 2010,其他版本例如2008,2012 都可以 1. ...
- 还在花钱搞开发?猿团YTFCloud,零基础照样做专业APP
近日,猿团科技再推新品:YTFCloud.这是一套一体化的云端解决方案,用户可以通过平台提供的各类解决方案,一键创建应用,也就是说,YTFCloud实现了APP的DIY自制,用户无需懂得编程,零基础制 ...
- 《零基础学习Python制作ArcGIS自定义工具》课程简介
Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...
- javascript入门视频第一天 小案例制作 零基础开始学习javascript
JavaScript 是我们网页设计师必备的技能之一.我们主要用javascript来写的是网页特效.我们从零基础开始学习javascript入门. 但是,好的同学刚开始不知道怎么学习,接触js,因此 ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- Python零基础学习系列之二--Python介绍及环境搭建
1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像P ...
- 【零基础】一文读懂CPU(从二极管到超大规模集成电路)
一.前言 我们都知道芯片,也知道芯片技术在21世纪是最重要的技术之一,但很少有人能知道芯片技术的一些细节,如芯片是如何构造的.为什么它可以运行程序.芯片又是如何被设计制造出来的等等.本文就尝试从最底层 ...
- [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】
[课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...
随机推荐
- cocos2d JS 监听键盘触摸响应事件(cc.EventListener.KEYBOARD)
除了可以监听键盘按键,还可以是终端设备的各个菜单键,都能使用同一个监听器来进行处理. //给statusLabel绑定键盘事件 cc.eventManager.addListener({ event: ...
- POJ 2155 Matrix(二维BIT)
Matrix [题目链接]Matrix [题目类型]二维BIT &题解: bit只能单点更新,恰好,这题可以想一下就可以用单点更新解决了. 只不过最后我交上去居然T了,想了10多分钟,试了一下 ...
- LeetCode104.二叉树最大深度
给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7], ...
- mac install wget
没有Wget的日子是非常难过的,强大的Mac OS 下安装Wget非常简单 下载一个Wget的源码包,http://www.gnu.org/software/wget/ ftp下载地址:ftp://f ...
- (转)yuicompressor 与 maven结合,打包,压缩js,css (一)
js,css代码压缩 web站点需要对js,css代码进行压缩,打包,下面是利用maven进行打包压缩的配置 将压缩后的代码打入到war包中,并且压缩后的js,css文件名不变 <plugins ...
- python ---多进程 Multiprocessing
和 threading 的比较 多进程 Multiprocessing 和多线程 threading 类似, 他们都是在 python 中用来并行运算的. 不过既然有了 threading, 为什么 ...
- poj2417 Baby-StepGiant-StepAlgorithm a^x=b%P
#include <iostream> #include <algorithm> #include <string.h> #include <cstdio&g ...
- uvalive 4848 Tour Belt
题意: 一个KTO被定义为一个特殊的连通块,这个连通块满足一个要求,这个连通块中的最短的边大于 与这个连通相连的不属于这个连通块的边中的最大值. 给出一个图,统计KTO里面的点有多少个.(一个点可以属 ...
- Spark学习之路 (九)SparkCore的调优之数据倾斜调优
摘抄自:https://tech.meituan.com/spark-tuning-pro.html 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Sp ...
- OpenCV学习笔记(一) - 边界填充、Rect函数
边界填充: c++实现,测试在mac pro里,输入720p时间0.4ms: cv::copyMakeBorder(image, dst, , , , , cv::BORDER_REPLICATE); ...