上兩篇文章實(shí)現(xiàn)了根據(jù)輸入歌手名爬取這個(gè)歌手的所有歌詞讨便,并生成可視化詞云;但是這些腳本運(yùn)行只能在python環(huán)境下運(yùn)行以政,不具有通用性霸褒,所以就想使用Python的GUI編程解決方案之一PyQt5,實(shí)現(xiàn)交互頁(yè)面盈蛮,然后再打成exe文件废菱,這樣就可以在Windows上運(yùn)行了。
1.PyQt5介紹
PyQt5是基于Digia公司強(qiáng)大的圖形程式框架Qt5的python接口抖誉,由一組python模塊構(gòu)成殊轴。PyQt5本身?yè)碛谐^(guò)620個(gè)類和6000函數(shù)及方法。在可以運(yùn)行于多個(gè)平臺(tái)寸五,包括:Unix, Windows, and Mac OS梳凛。
PyQt5的類存在與如下模塊當(dāng)中:
QtCore模塊涵蓋了包的核心的非GUI功能,此模塊被用于處理程序中涉及到的 time梳杏、文件、目錄淹接、數(shù)據(jù)類型十性、文本流、鏈接塑悼、mime劲适、線程或進(jìn)程等對(duì)象。
QtGui模塊涵蓋多種基本圖形功能的類; 包括但不限于:窗口集厢蒜、事件處理霞势、2D圖形、基本的圖像和界面 和字體文本斑鸦。
QtWidgets模塊包含了一整套UI元素組件愕贡,用于建立符合系統(tǒng)風(fēng)格的classic界面,非常方便巷屿,可以在安裝時(shí)選擇是否使用此功能固以。
QtMultimedia模塊包含了一套類庫(kù),該類庫(kù)被用于處理多媒體事件嘱巾,通過(guò)調(diào)用API接口訪問(wèn)攝像頭憨琳、語(yǔ)音設(shè)備、收發(fā)消息(radio functionality)等旬昭。
QtBluetooth模塊包含了處理藍(lán)牙活動(dòng)的類庫(kù)篙螟,它的功能包括:掃描設(shè)備、連接问拘、交互等行為遍略。
QtNetwork模塊包含用于網(wǎng)絡(luò)編程的類庫(kù)慢味,這組類程序通過(guò)提供便捷的TCP/IP 及 UDP 的 c/s 程式碼集合,使得基于Qt的網(wǎng)絡(luò)編程更容易墅冷。
QtPositioning模塊用于獲取位置信息纯路,此模塊允許使用多種方式達(dá)成定位,包括但不限于:衛(wèi)星寞忿、無(wú)線網(wǎng)驰唬、文字信息。此應(yīng)用一般用于網(wǎng)絡(luò)地圖定位系統(tǒng)腔彰。
Enginio模塊用于構(gòu)建客戶端的應(yīng)用程式庫(kù)叫编,用于在運(yùn)行時(shí)訪問(wèn) Qt Cloud 服務(wù)器托管的應(yīng)用程序。
QtWebSockets模塊包含了一組類程序霹抛,用以實(shí)現(xiàn)websocket協(xié)議搓逾。
QtWebKit包含了用于實(shí)現(xiàn)基于webkit2的網(wǎng)絡(luò)瀏覽器的類庫(kù)。
QtWebKitWidgets模塊包含用于基于WebKit1的Web瀏覽器實(shí)現(xiàn)的類杯拐,用于基于QtWidgets的應(yīng)用程序
QtXml模塊包含了用于處理XML的類庫(kù)霞篡,此模塊為SAX和DOM API 的實(shí)現(xiàn)提供了方法。
QtSvg模塊通過(guò)一組類端逼,為顯示矢量圖形文件的內(nèi)容提供了方法朗兵。
QtSql模塊提供了數(shù)據(jù)庫(kù)對(duì)象的接口以供使用
QtTest模塊包含了可以通過(guò)單元測(cè)試,以調(diào)試PyQt5應(yīng)用程式的功能顶滩。
在PyQt5中編寫UI界面可以直接通過(guò)代碼來(lái)實(shí)現(xiàn)余掖,也可以通過(guò)Qt Designer來(lái)完成。Qt Designer的設(shè)計(jì)符合MVC的架構(gòu)礁鲁,其實(shí)現(xiàn)了視圖和邏輯的分離盐欺,從而實(shí)現(xiàn)了開(kāi)發(fā)的便捷。Qt Designer中的操作方式十分靈活仅醇,其通過(guò)拖拽的方式放置控件可以隨時(shí)查看控件效果冗美。Qt Designer生成的.ui文件(實(shí)質(zhì)上是XML格式的文件)也可以通過(guò)pyuic5工具轉(zhuǎn)換成.py文件。
2.安裝PyQt5
方法一:
使用pip命令安裝
pip install PyQt5
pip install pyqt5-tools
方法二:
在Pycharm中安裝
如圖所示着憨,搜索PyQt5和pyqt5-tools在點(diǎn)擊 Install Package即可墩衙。
3.配置Qt Designer
Qt Designer隨PyQt5-tools包一起安裝,其安裝路徑在 “Python安裝路徑\Lib\site-packages\pyqt5-tools”下甲抖。
若要啟動(dòng)Qt Designer可以直接到上述目錄下漆改,雙擊designer.exe打開(kāi)Qt Designer;或在PyCharm中將其配置為外部工具打開(kāi)准谚。
1). 在Pycharm中配置Qt Designer方法如下:
Settings -> Tools -> External Tools -> + ->選擇Program
Program: D:\Studyspace\Python\reptile\venv\Scripts\pyqt5designer.exe
Arguments: $FileDir$\$FileName$
Working directory: $FileDir$
2).再次點(diǎn)擊+添加 .ui 文件轉(zhuǎn)換工具
Program: D:\Studyspace\Python\reptile\venv\Scripts\pyuic5.exe
Arguments: $FileName$ -o $FileNameWithoutExtension$.py
Working directory: $FileDir$
3).再次點(diǎn)擊+添加 .qrc 文件轉(zhuǎn)換工具
Program: D:\Studyspace\Python\reptile\venv\Scripts\pyrcc5.exe
Arguments: $FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory: $FileDir$
3.運(yùn)行QtDesigner
在Pycharm中點(diǎn)擊 Tools 然后 External Tools 的 PyQtDesigner 等待一會(huì)就運(yùn)行起來(lái)了
4.創(chuàng)建頁(yè)面布局
一般直接選擇 Main Window 就行挫剑,再點(diǎn)擊Create即可
創(chuàng)建了布局以后,在左側(cè)欄把需要的組件拖動(dòng)到畫布上即可柱衔,然后在右側(cè)可以調(diào)這個(gè)組件的相關(guān)參數(shù)
然后點(diǎn)擊保存樊破,會(huì)把 .ui 文件給保存到項(xiàng)目目錄下
點(diǎn)擊helloword.ui右鍵然后選擇External Tools 再選擇 pyuic5
會(huì)在同級(jí)目錄下生成一個(gè)helloworld.py文件
5.運(yùn)行創(chuàng)建的文件
編寫代碼調(diào)用創(chuàng)建的GUI文件
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from helloworld import *
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_())
6.總結(jié)
通過(guò)上面的一系列操作愉棱,配置了Qt Designer和轉(zhuǎn)換工具,了解了Qt Designer的設(shè)計(jì)界面哲戚,先在畫布上設(shè)計(jì)頁(yè)面奔滑,然后再根據(jù)保存的 .ui 文件轉(zhuǎn)換為 .py 文件 運(yùn)行后即可呈現(xiàn)出在畫布上設(shè)計(jì)的樣子。
Qt Designer對(duì)視圖和業(yè)務(wù)邏輯進(jìn)行了分離顺少,在優(yōu)化更改的時(shí)候只需要在設(shè)計(jì)上進(jìn)行更改朋其,然后再轉(zhuǎn)換成 .py 文件即可。也可以在轉(zhuǎn)換后的 .py 文件中進(jìn)行微調(diào)脆炎。
這樣就大大簡(jiǎn)化了我們的開(kāi)發(fā)負(fù)擔(dān)梅猿,提升了工作效率。棒棒噠~