宇宙最強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過的庫,可以增減和升級降級操作,非常方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章