PyCharm中Qt Designer+PyUIC配置


本文環境配置:

系統=>windows10:64位

語言=>Python:3.7.1

第三方庫
PyQT5:5.11.3
pyqt5-tools:5.11.3.1.4

工具=>PyCharm:2018.3.1


使用PyCharm,根據不同的項目搭建獨立的虛擬環境

  • 打開PyCharm
  • 點擊New Project
  • 選擇Pure Python,具體設置如下:

項目路徑自定義
選擇venv(virtualenv)目錄,這里存放一個虛擬的python環境。這里所有的類庫依賴都可以直接脫離系統安裝的python獨立運行。 
制定虛擬環境解釋器以本地安裝的哪個python版本來創建。

用同樣的方法在創建一個GUI的項目。這樣在我們的Project文件中就有兩個文件夾,每一個文件夾對應一個項目。

不同的項目需要不同的第三方庫。而PyCharm是根據項目來管理第三方庫的安裝。這樣做的好處有很多。

python項目可以獨立部署
防止一台服務器部署多個項目之間存在類庫的版本依賴問題發生
也可以充分發揮項目的靈活性

在PyCharm中安裝項目需要的包和插件

1、進入GUI項目,安裝PyQt5和pyqt5-tools包

2、添加Qt Designer工具,Tools——External Tools——點擊右側的"+"

  • Name: 輸入最后工具在菜單中的想呈現名稱,比如我這里命名為QT Designer
  • Program: designer.exe程序的位置,位於當前項目文件\venv\Scripts\下。注意這里要先安裝pyqt5-tools包,才有這個執行文件
  • Working directory:designer.exe工作路徑,設置為$FileDir$

3、添加PyUIC工具,繼續點擊"+"

  • Name: 輸入最后工具在菜單中的想呈現名稱 PyUIC
  • Program:pyuic5.exe程序的位置,位於當前項目文件\venv\Scripts\下。注意這里要先安裝PyQt5包,才有這個執行文件
  • Arguments: 執行語句$FileName$ -o $FileNameWithoutExtension$.py
  • Working dirctory: 工作路徑$FileDir$

至此我們的GUI項目虛擬環境搭建完畢,下面來編寫一點代碼測試

首先使用手動編寫一個登陸窗口

import sys from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QLineEdit, QMessageBox, QPushButton) from PyQt5.QtCore import QCoreApplication # 主窗體 app = QApplication(sys.argv) # 創建應用對象 LoginWindow = QWidget() # 構造登陸窗口 LoginWindow.setWindowTitle('登陸窗口') # 窗口標題 LoginWindow.resize(300, 180) # 窗口大小 # 姓名Label name_Label = QLabel(LoginWindow) # 放置在登陸窗口上 name_Label.setText('姓名') # 設置顯示文本 name_Label.move(60, 40) # 設置位置 # 輸入姓名文本框 name_Edit = QLineEdit(LoginWindow) # 放置在登陸窗口上 name_Edit.move(100, 36) # 設置位置 # 密碼Label pass_Label = QLabel(LoginWindow) # 放置在登陸窗口上 pass_Label.setText('密碼') # 設置顯示文本 pass_Label.move(60, 80) # 設置位置 # 輸入密碼文本框 pass_Edit = QLineEdit(LoginWindow) # 放置在登陸窗口上 pass_Edit.move(100, 76) # 設置位置 pass_Edit.setEchoMode(QLineEdit.Password) # 設置輸入密碼不可見 # 登陸函數 def end_event(): if name_Edit.text() == "": QMessageBox.about(LoginWindow, '登陸', '請輸入姓名') elif pass_Edit.text() == "": QMessageBox.about(LoginWindow, '登陸', '請輸入密碼') else: QMessageBox.about(LoginWindow, '登陸', name_Edit.text() + ' 歡迎登陸') # 登陸按鈕 end_Btn = QPushButton('登陸', LoginWindow) end_Btn.clicked.connect(end_event) # 綁定登陸函數 end_Btn.move(60, 120) # 退出按鈕 exit_Btn = QPushButton('退出', LoginWindow) exit_Btn.clicked.connect(QCoreApplication.instance().quit) # 綁定退出事件 exit_Btn.move(160, 120) LoginWindow.show() # 顯示窗口 sys.exit(app.exec_()) # 進入消息循環

右鍵選擇Run運行代碼,一個簡單的登陸窗口就制作完畢。

下面通過Qt Designer可視化排版制作窗體,看一下兩者的區別

點擊Tools——External Tools這里就有剛才添加的兩個工具,選擇Qt Designer

進入Qt Designer界面,選擇Main Window,點擊Create

在左側有很多控件選項,在窗體上 添加以下控件,並設置屬性:

兩個 Label控件來顯示姓名和密碼,並在右側修改控件的 objectName 
- 姓名標簽: name_label 
- 密碼標簽: pass_label 
兩個 Line Edit控件來讓用戶輸入單行文本,同樣修改 objectName屬性,而其密碼的輸入框要設置不可見
- 姓名輸入框: name_Edit
- 密碼輸入框: pass_Edit,修改 echoMode屬性為 Password
兩個 Push Button控件讓用戶可以進行點擊,修改 objectName屬性,
- 登陸按鈕:end_Btn
- 退出按鈕:exit_Btn

設置退出按鈕的信號與槽

在右側最下方選擇Signal/Slot Editor
點擊“+”號:
- Sender: 發送者 => 退出按鈕  exit_Btn 
- Signal: 信號 => 單擊  clicked 
- Receiver: 接受者 => 窗體  MainWindow 
- Slot: 槽 => 關閉事件  close

按Ctrl+R預覽窗口,看是否是想要的界面。測試OK,保存文件到GUI項目下

回到PyCharm,在GUI項目下面有一個MainWindow.ui, 就是剛在使用Qt Designer保存的文件,現在需要將這個文件轉換成.py文件

在該文件上點擊右鍵,選擇PyUIC

等程序運行完畢后,會多一個MainWindow.py的文件

里面已經幫我們編寫了窗體的框架代碼,但是這個文件無法運行,他只是定義了一個類。

新建一個Py文件,將這個窗體框架文件用import的方式導入進來,並編寫如下代碼

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow,QMessageBox
from MainWindow import *

class MyWindow(QMainWindow,Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setupUi(self)
        self.end_Btn.clicked.connect(self.end_event)  # 綁定登陸函數

    # 登陸函數
    def end_event(self):
        if self.name_Edit.text() == "":
            QMessageBox.about(self, '登陸', '請輸入姓名')
        elif self.pass_Edit.text() == "":
            QMessageBox.about(self, '登陸', '請輸入密碼')
        else:
            QMessageBox.about(self, '登陸', self.name_Edit.text() + ' 歡迎登陸')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWin = MyWindow()
    myWin.show()
    sys.exit(app.exec_())

右鍵運行,得到和我們手動編寫一樣的窗口。


對比兩者的區別

手動編寫的時候,需要大量的代碼和運算來設置窗體中的控件屬性以及大小位置等。

而使用Qt Designer來做,

  • 先通過可視化的排版。鼠標拖拽,點擊就能很輕松的得到一個符合業務邏輯的窗體。
  • 然后使用PyUIC將.ui文件轉換成.py
  • 最后新建一個文件,將創建好的窗體文件通過import的方式導入即可
  • 這樣的好處是將業務邏輯代碼和窗體代碼分離。將主要精力放在業務邏輯上,而不是在美化窗體。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM