本文環境配置:
系統=>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()