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)。
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è)工具甘磨。
點(diǎn)擊QtDesigner則打開QtDesigner的界面。
Qt Designer界面簡(jiǎn)介
剛打開Qt Designer眯停,則彈出如下圖所示的窗口济舆。
創(chuàng)建新的Form給出了5個(gè)模板,其中Widget與Main Window最為常用莺债。這里我們選擇創(chuàng)建一個(gè)Main Window滋觉。
上面界面的最左側(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)一的布局浅悉。
以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è)窗口
將.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)目目錄下)
通過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