日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

micropython教程(Python集成开发环境)

發(fā)布時(shí)間:2023/12/19 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 micropython教程(Python集成开发环境) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文旨在通過(guò)一個(gè)簡(jiǎn)單的demo,介紹基于Python3、PyQT5的環(huán)境下開(kāi)發(fā)桌面應(yīng)用程序的一種方案,當(dāng)然開(kāi)發(fā)Python的桌面應(yīng)用程序不止是PyQT 這一種方案,還可以使用Python自帶的Tkinter 來(lái)實(shí)現(xiàn)。

1. 安裝依賴環(huán)境

Eric6官網(wǎng):http://eric-ide.python-projects.org/

Eric6 依賴的組件必須先安裝好,依賴組件列表如下:

依賴:
為了使用 eric6 你應(yīng)該預(yù)先安裝好下列組件:

- Python 3.4.0 or better
- Python 2.7.10 or better
- Qt 5.3.0 or better (from The Qt Company)
- Qt 4.8.0 or better (from The Qt Company)
- PyQt 5.3.0 or better (from Riverbank)
- PyQt 4.10.0 or better (from Riverbank)
- QScintilla 2.8.0 or better (from Riverbank)

組件太多,并且他們之間的依賴關(guān)系一言不合就出錯(cuò),這里介紹個(gè)比較好的集成環(huán)境 Anaconda3 (64-bit) ,用它來(lái)安裝Pyqt等可以比較省心。

我本機(jī)的環(huán)境是:

- Win7 64位
- Anaconda 3-5.2.0-Windows-x86_64
- Python 3.6.5
- pip 10.0.1
- Eric6 18.10
- Pyqt 5.9.2
- QScintilla
- PyInstaller 3.5.dev0

其中QScintilla 是通過(guò)命令pip3 install QScintilla安裝的。

2. 安裝Eric6

依賴環(huán)境都搞定后,下載Eric6:
Eric6穩(wěn)定版官方下載地址:Eric6-18 :點(diǎn)我去下載

由于18.0版本開(kāi)始沒(méi)有了漢化包(或者是現(xiàn)在到了18.10版本都還沒(méi)有出來(lái)?),我們可以用17.12里面的中文包來(lái)達(dá)到漢化的目標(biāo)。
Eric6-17.12:點(diǎn)我去下載

下載后,把18.10的主程序zip包解壓,然后把17.12這個(gè)中文語(yǔ)言包解壓,覆蓋到18.10目錄,然后在cmd進(jìn)入這個(gè)18.10主程序包解壓目錄,執(zhí)行下面的命令安裝:

pyton install.py

安裝完成后啟動(dòng),雙擊eric6.cmd文件啟動(dòng)(我的因?yàn)槭前惭b了Anaconda3,所以這個(gè)cmd文件所在路徑為:C:\ProgramData\Anaconda3\Scripts),如果界面是中文的表示前面的漢化操作成功。

這里有個(gè)小問(wèn)題,雙擊這個(gè)批處理啟動(dòng)的時(shí)候,會(huì)一閃而過(guò)一個(gè)黑色的cmd窗口,不能忍,用一個(gè)簡(jiǎn)單的方法搞定… ,給這個(gè)文件創(chuàng)建個(gè)快捷方式發(fā)送到桌面,然后在這個(gè)快捷方式上右鍵屬性,在運(yùn)行方式那里把【常規(guī)窗口】改為 最小化

然后點(diǎn)應(yīng)用-確定,下次雙擊啟動(dòng)就妥妥的看不到一閃而過(guò)的憂傷了…

3. 配置Eric

啟動(dòng)eric6后,界面如下,可以看到中文漢化成功:

首次啟動(dòng),會(huì)自動(dòng)彈出對(duì)配置對(duì)話框提示讓你配置信息,如果你錯(cuò)過(guò)了也沒(méi)關(guān)系,從Eric6的應(yīng)用程序界面菜單[設(shè)置-首選項(xiàng)]進(jìn)入,具體配置如下:






從菜單的插件-插件存儲(chǔ)庫(kù)進(jìn)入,安裝jedi插件:

最后配置一下默認(rèn)工作目錄:

4. 創(chuàng)建窗口應(yīng)用

4.1 創(chuàng)建窗體UI


然后項(xiàng)目文件夾多了以下內(nèi)容:

回到Eric6界面,左側(cè)的源碼Tab頁(yè)簽切換到GUI窗體頁(yè)簽,右鍵選擇新建窗體




然后會(huì)引導(dǎo)你選擇位置保存這個(gè)窗體文件,然后會(huì)自動(dòng)進(jìn)入QT Designer設(shè)計(jì)界面:

這個(gè)界面,就跟MFC的設(shè)計(jì)界面差不多,哈哈,左側(cè)鼠標(biāo)按住Push Button 按鈕控件不放,拖動(dòng)至中間的窗體中,然后雙擊這個(gè)控件,輸入名字:測(cè)試按鈕,再添加一個(gè)text文本控件,然后設(shè)置窗體名字:

4.2 實(shí)現(xiàn)代碼邏輯

在前面設(shè)計(jì)好ui界面后,保存代碼并關(guān)閉QT Designer窗口回到Eric6界面

然后在左側(cè)ui文件上右鍵選擇編譯窗體生成ui界面組件對(duì)應(yīng)的python代碼:

這時(shí)會(huì)在項(xiàng)目目錄生成一個(gè)Ui_Test.py 腳本文件,內(nèi)容如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'D:\andy\Rep\eric6\Test.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_dialog(object):
    def setupUi(self, dialog):
        dialog.setObjectName("dialog")
        dialog.resize(400, 343)
        dialog.setSizeGripEnabled(True)

		# 定義的按鈕
        self.pushButton = QtWidgets.QPushButton(dialog)
        self.pushButton.setGeometry(QtCore.QRect(130, 120, 75, 23))
        self.pushButton.setObjectName("pushButton")

		# 定義的文本
        self.plainTextEdit = QtWidgets.QPlainTextEdit(dialog)
        self.plainTextEdit.setGeometry(QtCore.QRect(110, 170, 181, 31))
        self.plainTextEdit.setObjectName("plainTextEdit")

        self.retranslateUi(dialog)
        QtCore.QMetaObject.connectSlotsByName(dialog)

    def retranslateUi(self, dialog):
        _translate = QtCore.QCoreApplication.translate
        dialog.setWindowTitle(_translate("dialog", "測(cè)試應(yīng)用名"))
        self.pushButton.setText(_translate("dialog", "測(cè)試按鈕"))
        self.plainTextEdit.setPlainText(_translate("dialog", "點(diǎn)擊按鈕,改變此處文本"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    dialog = QtWidgets.QDialog()
    ui = Ui_dialog()
    ui.setupUi(dialog)
    dialog.show()
    sys.exit(app.exec_())

里面可以看到我們?cè)诖绑w界面定義的兩個(gè)控件:按鈕、文本顯示的對(duì)應(yīng)python類(lèi)中的變量名為:pushButtonplainTextEdit

接著在左側(cè)窗體視圖的UI文件上右鍵選擇生成對(duì)話框代碼:

選擇對(duì)話框上兩個(gè)控件所需的響應(yīng)事件后保存:

然后切換到python源碼頁(yè)簽可以看到生成了一個(gè)py類(lèi)文件,里面自動(dòng)生成了剛才在對(duì)話框中選擇的兩個(gè)響應(yīng)事件的代碼邏輯:

# -*- coding: utf-8 -*-

""" Module implementing dialog. """
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog

from .Ui_Test import Ui_dialog

 


class dialog(QDialog, Ui_dialog):
    """ Class documentation goes here. """
    def __init__(self, parent=None):
        """ Constructor @param parent reference to the parent widget @type QWidget """
        super(dialog, self).__init__(parent)
        self.setupUi(self)
    
    @pyqtSlot()
    def on_pushButton_clicked(self):
        """ Slot documentation goes here. """
        # TODO: not implemented yet
        raise NotImplementedError
    
    @pyqtSlot()
    def on_plainTextEdit_textChanged(self):
        """ Slot documentation goes here. """
        # TODO: not implemented yet
        raise NotImplementedError

我們修改下這個(gè)類(lèi):

  • 加上main方法
  • 修正引用的ui資源路徑:把這里的 from .Ui_Test import Ui_dialog 那個(gè)點(diǎn).去掉,否則會(huì)提示找不到這個(gè)模塊
  • 修改按鈕響應(yīng)函數(shù),改變文本控件顯示的內(nèi)容
  • 修改文本內(nèi)容改變響應(yīng)函數(shù),彈出一個(gè)消息提示框

修改完成的內(nèi)容如下:

# -*- coding: utf-8 -*-

""" Module implementing dialog. """

import sys

#這里我們提供必要的引用。基本控件位于pyqt5.qtwidgets模塊中。
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QMessageBox

from Ui_Test import Ui_dialog

 


class dialog(QDialog, Ui_dialog):
    """ Class documentation goes here. """
    def __init__(self, parent=None):
        """ Constructor @param parent reference to the parent widget @type QWidget """
        super(dialog, self).__init__(parent)
        self.setupUi(self)
    
    @pyqtSlot()
    def on_pushButton_clicked(self):
        """ Slot documentation goes here. """
        # 按鈕按下,改變label標(biāo)簽的文本內(nèi)容
        self.plainTextEdit.setPlainText(u"按鈕觸發(fā),我改變了自己!")
    
    @pyqtSlot()
    def on_plainTextEdit_textChanged(self):
        """ Slot documentation goes here. """
        # TODO: not implemented yet
        reply = QMessageBox.question(self, '信息', '文本框內(nèi)容改變了',QMessageBox.Yes)
        
if __name__ == '__main__':
    
    #每一pyqt5應(yīng)用程序必須創(chuàng)建一個(gè)應(yīng)用程序?qū)ο蟆ys.argv參數(shù)是一個(gè)列表,從命令行輸入?yún)?shù)。
    app = QApplication(sys.argv)
    
    #QWidget部件是pyqt5所有用戶界面對(duì)象的基類(lèi)。他為QWidget提供默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)沒(méi)有父類(lèi)。
    dialog = dialog()
    
    #resize()方法調(diào)整窗口的大小。這離是400px寬248px高
    dialog.resize(400, 248)
    
    #設(shè)置窗口的標(biāo)題
    dialog.setWindowTitle('我修改了標(biāo)題')
    
    #顯示在屏幕上
    dialog.show()
    
    #系統(tǒng)exit()方法確保應(yīng)用程序干凈的退出
    #的exec_()方法有下劃線。因?yàn)閳?zhí)行是一個(gè)Python關(guān)鍵詞。因此,exec_()代替
    sys.exit(app.exec_())

然后點(diǎn)擊Eric6應(yīng)用的菜單:項(xiàng)目-屬性,配置主腳本為我們這個(gè)Test.py

最后,通過(guò)菜單或者快捷鍵Ctrl+F2啟動(dòng)我們這個(gè)對(duì)話框應(yīng)用:


點(diǎn)擊按鈕后:

5. 打包py腳本輸出exe

5.1 安裝pyinstaller

下載pyinstaller源碼,源碼github地址,有時(shí)候用git拉取下來(lái)網(wǎng)速很慢,這里可以從csdn下載我上傳的最新版本(20181026更新的):點(diǎn)我下載20181026版本源碼

然后解壓這個(gè)源碼到某個(gè)目錄,cmd進(jìn)入這個(gè)解壓目錄,通過(guò)以下命令安裝:python setup.py install

5.2 打包輸出exe程序

然后來(lái)到我們的.py源碼目錄,通過(guò)以下命令打包成exe文件:

pyinstaller -F -w -i "D:\\xxxxxx\\app.ico" Test.py

基礎(chǔ)的命令格式是 pyinstaller [opts] [目標(biāo)程序.py]

可選的opts有:

-F, –onefile 打包成一個(gè)exe文件。
-D, –onedir 創(chuàng)建一個(gè)目錄,包含exe文件,但會(huì)依賴很多文件(默認(rèn)選項(xiàng))。
-c, –console, –nowindowed 使用控制臺(tái),無(wú)界面(默認(rèn))
-w, –windowed, –noconsole 使用窗口,無(wú)控制臺(tái)

-i "D:\\xxxxxx\\app.ico" 這個(gè)是更改exe的icon,如果不需要可以去掉。

最后打包出來(lái)的exe有35MB大小… 因?yàn)榘裃T核心的dll文件打包在一起了,否則在沒(méi)有安裝python以及PyQt的電腦上無(wú)法運(yùn)行的。

更多內(nèi)容請(qǐng)查看:pyinstaller官方說(shuō)明


參考資料:

[1]: Pyqt5官方文檔
[2]: Python3官方文檔
[3]: 廖雪峰老師的Python3 在線學(xué)習(xí)手冊(cè)
[4]: 菜鳥(niǎo)學(xué)堂-Python3在線學(xué)習(xí)
[5]: 其他所有分享過(guò)python學(xué)習(xí)填坑網(wǎng)友的經(jīng)驗(yàn)

總結(jié)

以上是生活随笔為你收集整理的micropython教程(Python集成开发环境)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。