Python PyQt5整理介紹
PyQt5 是Digia的一套Qt5應(yīng)用框架與python的結(jié)合,同時(shí)支持2.x和3.x,官方網(wǎng)站:www.riverbankcomputing.co.uk/news。
PyQt5是由一系列Python模塊組成。超過620個(gè)類,6000函數(shù)和方法。能在諸如Unix、Windows和Mac OS等主流操作系統(tǒng)上運(yùn)行。PyQt5有兩種證書,GPL和商業(yè)證書。
PyQt5類分為很多模塊,主要模塊有:
- QtCore 包含了核心的非GUI的功能。主要和時(shí)間、文件與文件夾、各種數(shù)據(jù)、流、URLs、mime類文件、進(jìn)程與線程一起使用。
- QtGui 包含了窗口系統(tǒng)、事件處理、2D圖像、基本繪畫、字體和文字類。
- QtWidgets
- QtMultimedia
- QtBluetooth
- QtNetwork
- QtPositioning
- Enginio
- QtWebSockets
- QtWebKit
- QtWebKitWidgets
- QtXml
- QtSvg
- QtSql
- QtTest
正文開始
好了,我們開一個(gè)新章節(jié),因?yàn)槲覍?duì)Gui設(shè)計(jì)比其它的熟一點(diǎn),所以我先來開個(gè)Gui設(shè)計(jì)的新坑。在這里說明一下。我們使用的是PyQt5,并不是Python自帶的Tkinter。那個(gè)我沒那么熟,可以說基本不會(huì)。這個(gè)欄目我們主要是講PyQt5的基礎(chǔ),至于更多,我覺得大家自己摸索,畢竟難了,我也累,寫多了看不懂。好了,欄目介紹完,現(xiàn)在開始說正式的。
首先因?yàn)镻yQt5是第三方庫,如果你直接import,那么就會(huì)報(bào)錯(cuò)。必須下載,至于怎么下載Python的第三方庫,我在基礎(chǔ)欄目中的Python庫已經(jīng)說過。大家自行翻閱。(還是說一個(gè)簡單一點(diǎn)的吧。。。)
在命令提示符/cmd中(Windows系統(tǒng),Linux和蘋果系統(tǒng)抱歉我沒用過,請(qǐng)諒解。)
pip install PyQt5
很簡單吧,如果報(bào)錯(cuò)了,你會(huì)看到一大堆紅字,如果末尾是…time out,那么就是中斷了,多試幾次。其它的自行搜索吧,畢竟太多了。我覺得最好還是下載.whl文件。
廢話了這么多,我們先來看一個(gè)我最近無聊編的實(shí)用工具,界面很簡陋,畢竟我大概只編了幾個(gè)小時(shí)不到。
import sys,sip from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton,QCheckBox, QComboBox,QLineEdit from PyQt5.QtGui import QFont from PyQt5.QtCore import Qt class Exchange_of_weather_degree_units(QWidget): def __init__(self): super().__init__() self.setting() def setting(self): self.unit = None self.choice = QComboBox(self) self.choice.addItem('℃') self.choice.addItem('℉') self.choice.activated[str].connect(self.choice_) self.choice.move(50,15) self.number = QLineEdit(self) self.number.setPlaceholderText('輸入轉(zhuǎn)化的數(shù)值') self.number.move(15,50) self.arrowhead = QLabel(self) self.arrowhead.setText('——————>') self.arrowhead.setFont(QFont('microsoft Yahei', 20)) self.arrowhead.move(165,20) self.result = QLabel(self) self.result.setText(' ') self.result.setFont(QFont('microsoft Yahei', 15)) self.result.move(370, 27.5) self.yes = QPushButton('確定',self) self.yes.clicked.connect(self.yes_) self.yes.move(220,50) self.setGeometry(300, 100, 520, 100) self.setWindowTitle('攝氏度與華氏度的轉(zhuǎn)換') self.show() def choice_(self,text): self.unit = text def yes_(self): try: if self.unit == '℃': result_ = eval(self.number.text()) * 1.8 + 32 self.result.setText(str(result_) + '℉') if self.unit == '℉': result_ = round((eval(self.number.text()) - 32) / 1.8,6) self.result.setText(str(result_) + '℃') else: result_ = eval(self.number.text()) * 1.8 + 32 self.result.setText(str(result_) + '℃') except: self.result.setText('請(qǐng)輸入數(shù)字') if __name__ == '__main__': app = QApplication(sys.argv) Ex = Exchange_of_weather_degree_units() sys.exit(app.exec_())
這個(gè)是華氏度與攝氏度的一個(gè)轉(zhuǎn)換小工具,對(duì)我來說挺實(shí)用。大家不用懂,就復(fù)制過去看看效果就好了。
其實(shí)這個(gè)里面涉及的知識(shí)并不多,所以大家不用怕。因?yàn)樽罨A(chǔ)的PyQt5框架是這樣的:
import sys from PyQt5.QtWidgets import QApplication, QWidget class Example(QWidget): def __init__(self): super().__init__() self.settings() def settings(self): self.setGeometry(300, 300, 450, 350) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
當(dāng)然,這只是我覺得的最簡模式,其實(shí)可以比這更精簡。不過長度也差不多這樣。所以大家不用害怕。
至于Qt5是什么,大家自行搜索,反正我可以告訴大家,這是一個(gè)極為強(qiáng)大與成熟的庫,Qt本身其實(shí)也是一個(gè)工具。如果要,可以加我QQ。
講了這些,我們現(xiàn)在來分析一下這個(gè)框架代碼:
sys庫是一個(gè)標(biāo)準(zhǔn)庫:
sys庫的作用:查看python解釋器信息及傳遞信息給python解釋器。
sys.argv:獲取命令行參數(shù)列表,第一個(gè)元素是程序本身
sys.exit(n):退出Python程序,exit(0)表示正常退出。當(dāng)參數(shù)非0時(shí),會(huì)引發(fā)一個(gè)SystemExit異常,可以在程序中捕獲該異常
sys.version:獲取Python解釋程器的版本信息
sys.maxsize:最大的Int值,64位平臺(tái)是2**63 - 1
sys.path:返回模塊的搜索路徑,初始化時(shí)使用PYTHONPATH環(huán)境變量的值
sys.platform:返回操作系統(tǒng)平臺(tái)名稱
sys.stdin:輸入相關(guān)
sys.stdout:輸出相關(guān)
sys.stderr:錯(cuò)誤相關(guān)
sys.exc_info():返回異常信息三元元組
sys.getdefaultencoding():獲取系統(tǒng)當(dāng)前編碼,默認(rèn)為utf-8
sys.setdefaultencoding():設(shè)置系統(tǒng)的默認(rèn)編碼
sys.getfilesystemencoding():獲取文件系統(tǒng)使用編碼方式,默認(rèn)是utf-8
sys.modules #以字典的形式返回所有當(dāng)前Python環(huán)境中已經(jīng)導(dǎo)入的模塊
sys.builtin_module_names:返回一個(gè)列表,包含所有已經(jīng)編譯到Python解釋器里的模塊的名字
sys.copyright:當(dāng)前Python的版權(quán)信息
sys.flags:命令行標(biāo)識(shí)狀態(tài)信息列表。只讀。
sys.getrefcount(object):返回對(duì)象的引用數(shù)量
sys.getrecursionlimit():返回Python最大遞歸深度,默認(rèn)1000
sys.getsizeof(object[, default]):返回對(duì)象的大小
sys.getswitchinterval():返回線程切換時(shí)間間隔,默認(rèn)0.005秒
sys.setswitchinterval(interval):設(shè)置線程切換的時(shí)間間隔,單位秒
sys.getwindowsversion():返回當(dāng)前windwos系統(tǒng)的版本信息
sys.hash_info:返回Python默認(rèn)的哈希方法的參數(shù)
sys.implementation:當(dāng)前正在運(yùn)行的Python解釋器的具體實(shí)現(xiàn),比如CPython
sys.thread_info:當(dāng)前線程信息
這些是有一些是我參考的,不過主要是查看PyQt5庫本身代碼,再翻譯解釋英文的成果。
然后是解包,這個(gè)沒問題吧。
然后創(chuàng)建Example庫,繼承了QWidget。
PyQt5有很多模塊,其中QWidget就是一個(gè)模塊,它包含了一系列創(chuàng)建桌面應(yīng)用的UI元素。
下面的初始化代碼應(yīng)該沒問題吧。
然后就是這個(gè)self.setGeometry(300, 300, 450, 350),這個(gè)是設(shè)置窗口與屏幕左上角的距離與長寬。
這個(gè)大家改改數(shù)據(jù)就懂了。
然后是self.show()
,這個(gè)是將界面顯示出來。
最后是運(yùn)行,if那一個(gè)判斷簡單來說是這樣的:
別的文檔調(diào)用你的這個(gè)庫時(shí)不會(huì)執(zhí)行if里的代碼。
然后app那一行大家就是所有的PyQt5應(yīng)用必須創(chuàng)建一個(gè)應(yīng)用(Application)對(duì)象。sys.argv參數(shù)是一個(gè)來自命令行的參數(shù)列表。Python腳本可以在shell中運(yùn)行。這是我們用來控制我們應(yīng)用啟動(dòng)的一種方法。
ex是調(diào)用庫,然后首先執(zhí)行__init__
的代碼,然后__init__又調(diào)用了settings,所以直接執(zhí)行initUI
里的程序。最后退出。
我們?cè)俑暮每匆稽c(diǎn)。
import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIcon class Example(QWidget): def __init__(self): super().__init__() self.settings() def setting(self): self.setWindowTitle(sys.argv[0]) #self.setWindowIcon(QIcon('圖片名.ico')) 自己加圖片 self.setGeometry(300, 300, 450, 350) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
我們加了兩行,在settings
中的第一行,就是設(shè)置標(biāo)題。第二行大家自行加ico圖片,這樣就會(huì)更豐富了。這個(gè)方法我就不列出來了,大家自己記住就好。
總結(jié)
到此這篇關(guān)于Python PyQt5整理介紹的文章就介紹到這了,更多相關(guān)Python PyQt5介紹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python編輯用戶登入界面的實(shí)現(xiàn)代碼
這篇文章主要介紹了python編輯用戶登入界面的實(shí)現(xiàn)代碼,非常不錯(cuò),代碼簡單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07Python tkinter之ComboBox(下拉框)的使用簡介
這篇文章主要介紹了Python tkinter之ComboBox(下拉框)的使用簡介,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02python實(shí)現(xiàn)飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09python 調(diào)用HBase的簡單實(shí)例
下面小編就為大家?guī)硪黄猵ython 調(diào)用HBase的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12使用Python將PDF文件轉(zhuǎn)存為圖片的代碼示例
因工作中的某些奇葩要求,需要將PDF文件的每頁內(nèi)容轉(zhuǎn)存成按順序編號(hào)的圖片,用第三方軟件或者在線轉(zhuǎn)換也可以,但批量操作還是Python方便,所以本文給大家介紹了使用Python將PDF文件轉(zhuǎn)存為圖片的方法,需要的朋友可以參考下2023-09-09Python自動(dòng)采集微信聯(lián)系人的實(shí)現(xiàn)示例
這篇文章主要介紹了Python自動(dòng)采集微信聯(lián)系人的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作
這篇文章主要介紹了python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07