1. 程式人生 > >宇宙最強VisualStudio2017配置pyQt5用於python3.6的UI介面工具

宇宙最強VisualStudio2017配置pyQt5用於python3.6的UI介面工具

前言
請務必注意我的寫作日期是2017年12月10日。

現在的新版都在不停的變化中,希望會越來愈好。

2017年3月18日,微軟釋出了Visual Studio2017,其中的社群版可以自由下載並應用,在這一款號稱“宇宙最強”的IDE和編譯器中,終於集成了對python語言的支援,並直接加入了機器學習的框架,不愧其牛B的稱號。
和傳統的pycharm相比,微軟繼承了一其一貫的強大作風,在程式設計時給碼農無微不至的關懷,自動補全和提示、環境和工具應有具有,而且可以直接連線網路從gitHub中獲取pyhon框架,很牛很暴力!
然而,在這一個版本中有一個敗筆,就是VS2017版中沒有python的UI支援和打包發行的的支援,讓我麼看看官網是如何描述的。

這裡寫圖片描述
官網推薦python的使用者UI採用pySide或者pyQt,但是按照官網的連結,遍尋QT的官網,pySide僅僅支援python至3.4版本,VS2017的python預設版本就是3.6,pyQt就壓根找不到支援VS2017的檔案,而且其官網上也就最多支援到python的3.5版,顯而易見,寫這段話的攻城獅壓根就對UI不敢興趣而且對python的UI極不熟悉,這段話不僅是廢話而且恐怕是一個巨大的坑,會導致閱讀並尋求答案的人陷入迷途。微軟,你攤上事了。
經過一天在黑暗中的摸索,我把自己的答案寫出來,各位童鞋,福利來了,翠花,還等什麼,上酸菜吧!

流程
不要問為什麼,按照我的流程執行就好了。
1 在VisualStudio017中,開啟檔案-新建-專案,選擇python工程:
這裡寫圖片描述


填寫專案的目錄和專案的名字,確定。

2 建立一個python檔案,helloWorld,隨便簡單敲幾行程式碼。沒關係,後面要變化的。
這裡寫圖片描述

3 選擇工具-外部工具,如圖的介面,點選新增
這裡寫圖片描述

在標題處填入“pyQTDesigner”,命令列選擇exe檔案,在pyhon的sit-package目錄下的pyqt-tools下
**提別提醒:在執行這一步之前,確保如下:
1 你已經安裝了python3.6
2 pip3 install pyqt5
3 pip3 install pyqt-tools**

引數一行採用巨集命令,直接選擇“itemFileName”後再後面新增“_form.ui”,其中的_form你可以按照自己的意思隨便填寫,ui是專有的副檔名,不得變更。
點選確定。

同樣,按照上述步驟新增一個外部工具“pyuic5”,其執行檔案是一個py檔案,在pyhon的scripts目錄下,引數行填寫看我的示意圖,其實質是在執行一個命令:“pyuic5 fileName.ui -o fileName.py”,就是將Qt的UI檔案轉化為py檔案,其中的檔名是一個巨集命令,後面還添加了我們剛才給出的字尾,當然,引數行也可以不用填寫,到時自己指定就好了。目錄也是一個巨集命令,就是你的專案的路徑。
這裡寫圖片描述

4 點選確定後回到VS2017,我們看到在工具選單下已經多出了兩個標籤:
這裡寫圖片描述

5 點選其中的“pyQtDesigner”:點選確定。
這裡寫圖片描述

6 就會開啟一個Qt的Ui介面:
這裡寫圖片描述
在彈出的提示框中選擇新建
這裡寫圖片描述
選擇main windows.
這裡寫圖片描述
在窗體上拉入兩個按鈕,給出觸發事件的函式命名,拉入一個editText和lable。這些都是pyQt5的標準做法,和其它的windows窗體工具箱一樣,這裡有豐富的UI控制元件,自由編輯就好了。

點選儲存後就可以將這個窗體關掉,回到專案的目錄下,你會發現出現了一個“helloWorld_form.ui”的檔案,這就是我們剛才建立的窗體檔案。
這裡寫圖片描述

7 回到VS2017,點選工具-pyuic5,出現如下提示框,就是剛才我們填寫的命令和引數,點選確定。
這裡寫圖片描述
你會發現在專案的目錄下多出來一個“helloWorld_form.py”的檔案,這就是QT檔案直接轉化成為py檔案。
這裡寫圖片描述

回到VS2017介面,開啟這個py檔案,裡面就是標準的py語言。對這個檔案我們不需要做任何更改。
注意:在VS中這個檔案裡的內容會和pycharm中稍有不同。
這裡寫圖片描述

8 回到我們的專案檔案“helloWorld.py”檔案,補全內容:
這裡寫圖片描述

from helloWorld_form import Ui_MainWindow # 匯入uitestPyQt5.ui轉換為uitestPyQt5.py中的類
from PyQt5 import QtGui, QtWidgets,QtCore
from PyQt5.QtGui import QImage,QPixmap
import cv2

class Mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
# 建立的是Main Window專案,故此處匯入的是QMainWindow
# class myform(QWidget,Ui_Form):如建立的是Widget專案,匯入的是QWidget
def init(self):
super(Mywindow, self).init()
self.setupUi(self)

def btn2(self):
    self.textEdit.setText('Hello World!'+'\n')

def btn1(self):
    img=cv2.imread('c:\\lena.png')
    self.label.setPixmap(QPixmap.fromImage(cvMatToQimg(img)))

def cvMatToQimg(mat):#將opencv格式的檔案轉化為pyqt5的檔案格式
mat = cv2.cvtColor(mat, cv2.COLOR_BGR2RGB)
#mat=cv2.cvtColor(mat,cv2.COLOR_BGR2HSV)
#mat = cv2.cvtColor(mat, cv2.COLOR_BGR2GRAY)
return QImage(mat.tostring(), mat.shape[1], mat.shape[0], mat.shape[2] * mat.shape[1], QtGui.QImage.Format_RGB888)

if name == ‘main‘:
app = QtWidgets.QApplication(sys.argv)
window = Mywindow()
window.show()
# window=myform() #如果是QWidget
#windows.show()
#app.exec_()
sys.exit(app.exec_())
“`
這段程式碼有我的一些程式在裡面,基本的樣式就是這樣,其中的類和尾部的程式碼都是標準的,無需更改。
其中的btn1和 btn2就是我們在QT窗體裡指定的觸發函式名。
這段程式碼不多做解釋,請自行度娘學習。

9 執行一下程式ctr F5
這裡寫圖片描述
點選兩個按鈕,可以看到圖片和文字框的內容都發生了變化。
這裡寫圖片描述

這是專案目錄裡檔案的情況。
這裡寫圖片描述

結語
果斷刪除pycahrm,以後就是VS2017了。

後記
在VS2017中,關於python各類庫的更新在工具-python-環境設定中,選擇“包”,就會出現各種已經pip過的庫,可以增減和升級降級操作,非常方便。