python编程计算器_Python学习笔记:用Python开发一个计算器项目

最近抽空看了下python的学习文档,发现开发工具以及资料支持对开发者相当的友好,相比之下,以前用TCL&Tk做的项目主要缺点有两个:1,开发难度大,调试手段只有靠print一种,而且语法错误也经常定位不准确。2.维护难度大,目前已经成型T口工具函数参数传递基本是全局变量global传递,且需求有点变更就要加函数,导致代码越来越臃肿,debug起来不方便。

以上问题用Python开发是不存在的。基于以上诉求,我通过自己设计,开发一款可以在Windows 上运行的计算器小插件,达到掌握Python 语法 GUI界面控件入门的目的。

学习前准备:安装Python环境安装,python-3.5.4(32位)

我的电脑装这个会报错

8.001.jpg

我装的是64位的python-3.7.2-amd64,这个在python.org 官网都有下载

安装完成后 在cmd敲命令,如果显示没有该指令,则需要如下指令添加环境变量

path=%path%;C:\Python37(python安装路径)

同理,pip工具(下载库以及辅助开发工具)也需要添加环境变量

path=%path%;C:\Python37\Scripts (pip 安装路径)

环境变量安装成功后cmd执行命令:

Pip install PyQt5

Pip install PyQt5-tools

Pip install Pyinstaller安装开发环境Pcharm。去Pcharm官网下载免费版安装包,这个默认安装就行了。

设置Pcharm

File-setting-project-project interpreter 路径定位到python安装的位置

8.002.jpg

软件安装到此结束。

项目开发阶段:

期望:开发一个可以多位数加减乘除运算的界面。

第一阶段:语法学习,看“笨办法学python”,之前用java做过一些小东西,对类,包,面向对象这些概念不陌生,所以语法这块看的很快,浏览一遍文档,一些基础的语法格式就可以用了,语法这块必须放在第一步看,学会怎么定义一个函数,变量赋值,逻辑运算,变量传递等。Pcharm写代码很容易,它有联想功能,变量,函数,包只需要打首字母就可以了。代码写的有问题时反过去看文档,记忆会更深刻。

开始做的一些语法练习

# this is my python parctice first day,let's enjoy it!

#-*- coding;utf-8

print("hello world")

print("i am testing")

print("test=", 100 / 30)

w = "i am"

g = " a man"

print(w + g)

print(len(w))

def testraw(testinput,count):

print("inputis=", testinput)

count=count+10

print("count=",count)

testraw("123456",100)

def comparenum(people,cats):

if(people>cats):

print("people num dayu cats")

else:

print("peole num xuaoyu cats")

comparenum(100,50)

def cycle():

arr = [3,2,11,12,4,5,6]

for i in range(0,6):

print(arr[i])

class zifutry(object):

def zifutest(self,zifuyin):

print("zifu=",zifuyin)

def another(self,chuandi):

self.zifutest(chuandi)

a = zifutry()

a.another("shuage")复制代码

第二阶段:想好自己的目标需要什么样的资源。

看完语法后我开始搜索GUI界面需要的组件了,Calculator 构成很简单,按键加文本框,按键按下后要有响应,要能识别不同按键按下代表不同的含义。学按键这块我就体会到python的强大了,也就是signal与slot的用法。

8.003.jpg

上代码:这句的意思是导入sys 块导入要用到的包。我用到组件很少,都在QtWiget包里

import sys

from PyQt5.QtWidgets import QWidget,QPushButton,QApplication,QPlainTextEdit #导入代码用到的组件

定义一个类,类名为Calculaor,这个类的类型为QWidget,不写QWidget的后果就是这个类里你没办法用它里面包含的方法,写图形界面的类要注意定义成这种的。

Def 了一个初始化函数,super()._intit_()这句和类的继承有关,Self.InitUI(),self又是python的一个特色,这是Calulator 类的一个实例,这里调用了InitUi方法。 self.wenben,是定义了类里的一个全局变量。

class Calculator(QWidget):

def __init__(self):

super().__init__()

self.InitUI()

self.wenben = ''#定义一个QWidget类里的全局变量,该类里的方法均可使用该变量

Def initUI 函数里创建文本框,设置文本框大小,创建按键,定义按键及设置按键位置,按键创建是相似的,就不贴了。

def InitUI(self):

#创建文本框

self.text = QPlainTextEdit(self)

self.text.setGeometry(30, 15, 300, 40)

#创建按键

btn1 = QPushButton('1', self)

btn1.move(50, 80)

btn2 = QPushButton('2', self)

btn2.move(150, 80)

我的组件用的全部是绝对布局的方式,每个组件都要设一遍位置,很麻烦,后面优化了一个版本,加上了垂直布局和网格布局,代码量又少了很多,更容易维护

设定死Widget框的大小,不可拉伸,可拉伸会显得很奇怪

self.setMaximumHeight(300)

self.setMinimumHeight(300)

self.setMaximumWidth(500)

self.setMinimumWidth(500)

self.setWindowTitle('Cacluator 尝鲜版 见南山友情制作 V0.2')

设定按键触发的槽,槽就是一个方法,按下后会调到这个方法了,我定义的槽“NumButtonClick”

btn1.clicked.connect(self.NumButtonClick)

进入NumButtonClick中,try+except是捕获异常用的,无论代码运行出现什么异常,用这个方法捕获并处理是非常好的做法。

Sender()这个方法里保存有按键按下发射的信息。

还需要转用text()方法获取到相关的字符

def NumButtonClick(self):

try:

sender = self.sender() #接收按键发射的信息

value = sender.text()

打印出来看看

这里就是计算器代码的实现了,非常简单 主要是数据处理都交给eval这个函数了,这个函数可以处理一串符合运算法则的字符,如“a+b=”,用这个方法直接就能得出结果,少了自己处理字符这个过程,代码量少了很多。

if value != 'R': #清除键没有按下

if value != '=': #等号没有按下则执行字符串拼接操作

self.wenben = self.wenben+value

self.text.setPlainText(self.wenben) #将键入的字符用PlainText控件在文本框显示出来

print('wenben',self.wenben)

else:

Result = eval(self.wenben) #如果键入等于,则用eval 函数处理字符串表达式(非常方便)

Result = str(Result)

self.text.setPlainText(Result)

else: #清空键按下,执行文本框清空操作

self.wenben = ''

self.text.setPlainText(self.wenben)

代码写完之后run下(绝对布局的界面):

8.005.jpg

垂直布局+网格布局的界面

8.006.jpg

代码打包成exe格式。

在py文件路径下输入cmd

输入命令 Pyinstaller -F -w xx.py

打包成exe格式,就可以分享给其它小伙伴了!

完整的Word格式文档51黑下载地址:

msoffice.gif

Python学习笔记.docx

(305.84 KB, 下载次数: 9)

2019-1-28 20:43 上传

点击文件名下载附件

下载积分: 黑币 -5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值