久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6243|回復: 0
打印 上一主題 下一主題
收起左側

Python學習筆記:用Python開發一個計算器項目

[復制鏈接]
跳轉到指定樓層
樓主
ID:80221 發表于 2019-1-28 20:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

最近抽空看了下python的學習文檔,發現開發工具以及資料支持對開發者相當的友好,相比之下,以前用TCL&Tk做的項目主要缺點有兩個:1,開發難度大,調試手段只有靠print一種,而且語法錯誤也經常定位不準確。2.維護難度大,目前已經成型T口工具函數參數傳遞基本是全局變量global傳遞,且需求有點變更就要加函數,導致代碼越來越臃腫,debug起來不方便。

以上問題用Python開發是不存在的。基于以上訴求,我通過自己設計,開發一款可以在Windows 上運行的計算器小插件,達到掌握Python 語法 GUI界面控件入門的目的。

學習前準備:

  • 安裝Python 環境安裝,python-3.5.4(32)

我的電腦裝這個會報錯

我裝的是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安裝的位置

軟件安裝到此結束。

項目開發階段:

期望:開發一個可以多位數加減乘除運算的界面。

第一階段:語法學習,看“笨辦法學python”,之前用java做過一些小東西,對類,包,面向對象這些概念不陌生,所以語法這塊看的很快,瀏覽一遍文檔,一些基礎的語法格式就可以用了,語法這塊必須放在第一步看,學會怎么定義一個函數,變量賦值,邏輯運算,變量傳遞等。Pcharm寫代碼很容易,它有聯想功能,變量,函數,包只需要打首字母就可以了。代碼寫的有問題時反過去看文檔,記憶會更深刻。

開始做的一些語法練習


  1. <font style="font-size: 14px"># this is my python parctice first day,let's enjoy it!
  2. #-*- coding;utf-8
  3. print("hello world")
  4. print("i am testing")
  5. print("test=", 100 / 30)
  6. w = "i am"
  7. g = " a man"
  8. print(w + g)
  9. print(len(w))
  10. def testraw(testinput,count):
  11.     print("inputis=", testinput)
  12.     count=count+10
  13.     print("count=",count)
  14. testraw("123456",100)

  15. def comparenum(people,cats):
  16.     if(people>cats):
  17.         print("people num dayu cats")
  18.     else:
  19.         print("peole num xuaoyu cats")

  20. comparenum(100,50)
  21. def cycle():
  22.     arr = [3,2,11,12,4,5,6]
  23.     for i in range(0,6):
  24.         print(arr[i])

  25. class zifutry(object):
  26.     def zifutest(self,zifuyin):
  27.         print("zifu=",zifuyin)
  28.     def another(self,chuandi):
  29.         self.zifutest(chuandi)
  30. a = zifutry()
  31. a.another("shuage")</font>
復制代碼


第二階段:想好自己的目標需要什么樣的資源。

  看完語法后我開始搜索GUI界面需要的組件了,Calculator 構成很簡單,按鍵加文本框,按鍵按下后要有響應,要能識別不同按鍵按下代表不同的含義。學按鍵這塊我就體會到python的強大了,也就是signal與slot的用法。


上代碼:這句的意思是導入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下(絕對布局的界面):

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

代碼打包成exe格式。

在py文件路徑下輸入cmd

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

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



完整的Word格式文檔51黑下載地址:
Python學習筆記.docx (305.84 KB, 下載次數: 21)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费电影 | 日韩成人 | 免费在线观看av的网站 | 亚洲一区视频 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲成人免费视频在线 | 欧美日韩在线免费观看 | 日韩在线成人 | 日日干天天操 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 激情福利视频 | 91精品在线观看入口 | 一区二区三区视频在线免费观看 | www.久久精品 | 韩日一区二区三区 | a级黄色片视频 | 日韩欧美国产不卡 | 免费在线观看一区二区 | 欧美五月婷婷 | 日韩视频免费看 | 九九热在线视频免费观看 | 午夜影院在线观看免费 | 欧美日韩精品在线免费观看 | 喷水毛片 | 特一级黄色毛片 | 蜜桃免费一区二区三区 | 一区二区三区欧美 | www亚洲精品 | 天天躁天天操 | 免费九九视频 | 国产成人免费视频网站高清观看视频 | 四虎影院在线免费观看 | 日本久久久影视 | 国产精品高潮呻吟久久久久 | 亚洲欧美精品国产一级在线 | 久久99精品久久久久久青青日本 | 91精品国产综合久久精品图片 | 国产日韩欧美激情 | 久久久久久国产精品免费免费狐狸 | 亚洲在线视频 | 久久九 |