PyQt5圖形界面編程

Qt Designer的介紹

在PyQt中編寫UI界面可以直接通過代碼來實(shí)現(xiàn)握玛,也可以通過Qt Designer來完成够傍。Qt Designer的設(shè)計(jì)符合MVC的架構(gòu),其實(shí)現(xiàn)了視圖和邏輯的分離挠铲,從而實(shí)現(xiàn)了開發(fā)的便捷杂伟。Qt Designer中的操作方式十分靈活嗜愈,其通過拖拽的方式放置控件可以隨時(shí)查看控件效果。Qt Designer生成的.ui文件(實(shí)質(zhì)上是XML格式的文件)也可以通過pyuic5工具轉(zhuǎn)換成.py文件。

Qt Designer隨PyQt5-tools包一起安裝乎澄,其安裝路徑在 “Python安裝路徑\Lib\site-packages

\QtDesigner\”下判莉。

若要啟動(dòng)Qt Designer可以直接到上述目錄下丽惶,雙擊designer.exe打開Qt Designer缅阳;或?qū)⑸鲜雎窂郊尤氕h(huán)境變量,在命令行輸入designer打開音羞;或在PyCharm中將其配置為外部工具打開囱桨。

下面以PyCharm為例,講述PyCharm中Qt Designer的配置方法嗅绰。

PyCharm中PyQt5工具配置

打開PyCharm舍肠,選擇Settings -> Tools -> External Tools搀继,點(diǎn)擊左上角的綠色加號(hào)。

image

Name填入QtDesigner(方便后續(xù)使用翠语,名稱無所謂)叽躯。Program選擇我們安裝的PyQt5-tools下面的designer.exe。Working directory則選擇我們的工作目錄肌括。然后點(diǎn)擊OK点骑,則添加了QtDesigner作為PyCharm的外置工具。

然后添加PyUIC(UI轉(zhuǎn)換工具)谍夭,PyUIC的Program為Python.exe黑滴,在Python的安裝目錄下面的Scripts目錄下,Working directory同理設(shè)為我們的工作目錄紧索,Arguments則填入如下代碼:

-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

最后添加pyrcc用于PyQt5的資源文件轉(zhuǎn)碼袁辈。具體配置與上述內(nèi)容相同,Arguments填入:

$FileName$ -o $FileNameWithoutExtension$_rc.py

退出之前珠漂,點(diǎn)擊Apply保存配置晚缩。配置完成之后,PyCharm中會(huì)加入3個(gè)工具甘磨。

image

點(diǎn)擊QtDesigner則打開QtDesigner的界面。

Qt Designer界面簡(jiǎn)介

剛打開Qt Designer眯停,則彈出如下圖所示的窗口济舆。

模板窗口

創(chuàng)建新的Form給出了5個(gè)模板,其中Widget與Main Window最為常用莺债。這里我們選擇創(chuàng)建一個(gè)Main Window滋觉。


QtDesigner界面

上面界面的最左側(cè)菜單為Widget Box,Widget Box中包含PyQt5中的所有Widget組件齐邦,我們可以從左側(cè)的Widget Box中拖拽出諸如Button椎侠、View和Input等組件到中間的窗口中。

點(diǎn)擊Form -> Preview(快捷鍵為Ctrl+R)則可以預(yù)覽我們?cè)O(shè)計(jì)好的界面措拇,也可以用Preview In來選擇在相應(yīng)的主題風(fēng)格下預(yù)覽我纪。

可以通過拖拽將左邊的組件進(jìn)入主窗口(Main Window)。

主窗口

此時(shí)在右上角的Object Inspector(對(duì)象查看器)中可以看到主窗口中的已放置的對(duì)象(label與pushButton)以及其相應(yīng)地Qt類丐吓。在此處可以對(duì)多組件進(jìn)行統(tǒng)一的布局浅悉。

對(duì)象查看器

以Label為例,此時(shí)我們點(diǎn)擊Main Window中的label或是在Object Inspector中選取label后券犁,查看右側(cè)的一塊區(qū)域——Property Editor(屬性編輯器)术健。在此處可以進(jìn)行組件屬性的修改。

屬性編輯器

其主要包含屬性有如下:
| 名稱 | 含義 |
| objectName | 控件對(duì)象名稱 |
| geometry | 相應(yīng)寬和高與坐標(biāo) |
| sizePolicy | 控件大小的策略 |
| minimumSize | 最小的寬和高 |
| maximumSize | 最大的寬和高 |
| font | 字體 |
| cursor | 光標(biāo) |</byte-sheet-html-origin>

PS:將minimumSize和maximumSize設(shè)為一樣的數(shù)值之后粘衬,則窗口的大小固定荞估。

最右下角的部分則為Resource Browser(資源瀏覽器)咳促,資源瀏覽器中可以添加相應(yīng)地如圖片素材,作為L(zhǎng)abel或Button等控件的背景圖片等勘伺。

資源瀏覽器

經(jīng)過一番拖拉拽跪腹,設(shè)計(jì)出了需要的2個(gè)窗口

image

將.ui文件轉(zhuǎn)換為.py文件

將.ui文件轉(zhuǎn)換到.py文件很簡(jiǎn)單,用前面設(shè)置的pyuic5這個(gè)工具娇昙。

直接在PyCharm中尺迂,找到.ui文件,右鍵 打開菜單找到External Tools->PyUIC冒掌。點(diǎn)擊之后噪裕,我們?cè)谙鄳?yīng)工程目錄下會(huì)產(chǎn)生一個(gè).py文件。(注意股毫,.ui文件必須存放在我們的External Tools中設(shè)置的相應(yīng)項(xiàng)目目錄下)

PyUIC

通過Qt Designer設(shè)計(jì)出ui膳音,可以轉(zhuǎn)換成出可用的python代碼。

組件之間的后臺(tái)交互邏輯代碼铃诬,再在另外的文件中開發(fā)祭陷。很好的分離了UI代碼和交互邏輯代碼,方便未來進(jìn)行UI的優(yōu)化趣席。

交互邏輯代碼編寫方法

父窗口和子窗口間的交互

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
# connection.ui轉(zhuǎn)換成的connection.py
from connection import Ui_Connection
# window.ui轉(zhuǎn)換成的window.py
from window import Ui_MainWindow

class ParentWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(ParentWindow, self).__init__()
        self.setupUi(self)  # 使用Ui_MainWindow類的setupUi方法

class ChildWindow(QMainWindow, Ui_Connection):
    def __init__(self,parent_instance):
        super(ChildWindow, self).__init__()
        self.setupUi(self)  # 使用Ui_Connection類的setupUi方法

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWin = ParentWindow()
    myWin.child_window = ChildWindow(myWin)  # 父窗口關(guān)聯(lián)子窗口
    myWin.add_connection_button.clicked.connect(myWin.child_window.show)
    myWin.show()
    sys.exit(app.exec_())

個(gè)人開發(fā)

pyqt5 redis_desktop:https://github.com/walker-coder/redis_desktop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兵志,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宣肚,更是在濱河造成了極大的恐慌想罕,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霉涨,死亡現(xiàn)場(chǎng)離奇詭異按价,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)笙瑟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門楼镐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人往枷,你說我怎么就攤上這事框产。” “怎么了错洁?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵茅信,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我墓臭,道長(zhǎng)蘸鲸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任窿锉,我火速辦了婚禮酌摇,結(jié)果婚禮上膝舅,老公的妹妹穿的比我還像新娘。我一直安慰自己窑多,他們只是感情好仍稀,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著埂息,像睡著了一般技潘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上千康,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天享幽,我揣著相機(jī)與錄音,去河邊找鬼拾弃。 笑死值桩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豪椿。 我是一名探鬼主播奔坟,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搭盾!你這毒婦竟也來了咳秉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤鸯隅,失蹤者是張志新(化名)和其女友劉穎澜建,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滋迈,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霎奢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年户誓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饼灿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帝美,死狀恐怖碍彭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悼潭,我是刑警寧澤庇忌,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站舰褪,受9級(jí)特大地震影響皆疹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜占拍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一略就、第九天 我趴在偏房一處隱蔽的房頂上張望捎迫。 院中可真熱鬧,春花似錦表牢、人聲如沸窄绒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彰导。三九已至,卻和暖如春敲茄,著一層夾襖步出監(jiān)牢的瞬間位谋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工折汞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倔幼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓爽待,卻偏偏與公主長(zhǎng)得像损同,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸟款,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容