【肝魂一晚上總結:全網最全最細】手把手教你PyQt5安裝與使用??《??記得收藏??》
- 🏳??🌈目錄
-
🏳??🌈開講啦!!!!🏳??🌈 - ?前言
- ?安裝
- ?配置
- ?使用
- 🌡?入門
- 🏳??🌈關注蘇州程式大白,持續更新技術分享,謝謝大家支持🏳??🌈
🏳??🌈目錄
| 🏳??🌈開講啦!!!!🏳??🌈 |

?前言
最近偶爾會寫一些小工具提升專案組的效率,由于與物理設備互動的中間模塊是基于 Python 的,用 Java 難以做到與之通信,為了方便大家日常使用,所以盯上了 Python GUI 工具,試了幾個 GUI 框架,最侄訓是看上了 PyQt5 這個使用較多,檔案相對較全的工具~
PyQt5 是以 QT 庫為基礎,而 QT 庫是一個 C++ 庫和開發工具,包括圖形用戶界面、網路、執行緒、正則運算式、SQL 資料庫、SVG、OpenGL、XML、用戶和應用程式設定、定位和定位服務、短距離通信( NFC 和藍牙)、網頁瀏覽、3D 影片、圖表、3D 資料可視化以及與應用程式商店的介面,PyQt5 將超過 1000 個這些類實作為一組 Python 模塊,
簡而言之,PyQt5 就是一個類似于 Java Swing 的 GUI 工具,其中已經內置了較多的高級模塊,而且使用 PyQt Desinger 這種工具,可以做到圖形化繪制界面,并再次轉換成 py 腳本檔案,
Py Qt5官網
?安裝
此處略去 Python3 的安裝,使用 pip 工具打開 CMD 進行安裝:
pip install pyqt5
pip install pyqt5-tools
其中第一個命令是安裝 PyQt5 的核心內容,下面的 pyqt5-tools 則是安裝 QtDesigner 和 PyUIC 等強大的配套工具,
當然,為了最后打包為 exe 工具,還需要安裝 pyinstaller 模塊:
pip install pyinstaller
上面其實就已經安裝好了依賴庫,接下來我們在 PyCharm 里面配置一下其中的工具,便于快速打開,
?配置
這里主要是配置兩個工具,一個是繪圖工具,直接以 HTML 形式繪制工具的界面 UI,另外一個是將 HTML 界面一鍵轉換成 py 檔案的工具,
打開 Pycharm,點擊 File–>Setting–>Tools–>External Tools

右邊部分本來是空白,點擊“+”號,進行如下設定:

Program:填寫 PyQtDesigner 安裝的路徑,也就是安裝的 designer.exe 所在的路徑,不同版本存盤的路徑可能不一樣,得自己去 Python 的安裝路徑下面找到,
例如:我安裝后的路徑在 D:\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe(看自己的選擇)
Working directory 就填 $FileDir$,比較方便的也可以點擊右側 Insert Macro…,然后找到 $FileDir$,
第二個工具是 PyUIC,就是將繪制的界面 UI 轉換成 py 檔案的工具,還是 File-->Setting-->Tools-->External Tools,打開后添加工具:

Program:是Python的安裝路徑
Arguments:填寫如下:
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$
到此為止,基本設定就已經完成了,我們可以開始簡單的測驗一下,
?使用
點擊 PyCharm 導航欄上的 Tools -> External Tools 打開上面配置的 QtDesigner
會自動打開繪制工具:

我們選擇默認的,點擊 OK,就得到一個初始的界面

其中:
-
左側即是列出的所有元素,包括表格、輸入框、標簽、復選框、下拉框等等
-
中間是繪圖界面,可以自己移動元素
-
右側上面是每個元素的物件資訊
-
右側中間是選中元素的屬性,可以修改大小、默認值、字體、樣式、滑鼠懸停策略等等資訊
-
右側下面是高級屬性,也就是 PyQt5 的信號槽,可以完成多執行緒操作
我們繪制一個簡單的表單如下:

可以點擊上面導航欄中的預覽進行頁面預覽:

點擊保存為 *.ui 檔案,使用 PyCharm 打開,使用 PyUIC 工具將其轉換成 py 檔案:

然后就會在當前目錄下生成一個默認的同名 Py 檔案:
要讓 py 檔案運行起來,我們需要添加一個 main 函式作為啟動入口,在剛才生成的 py 檔案末尾加入以下代碼并引入相應的依賴即可:
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_Dialog()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
這時候我們點擊運行 py 檔案,就可以打開這個界面了!
🌡?入門
現在我們用上面的表單做這么一件事情,點擊確定,彈窗提示“添加成功”,點擊“重置”,清空表單中的所有內容,所以我們要在 py 檔案中添加動態操作,整個邏輯比較簡單,就是在點擊“確定”按鈕時,獲取到上面表單的填寫內容,在后臺列印,并在前臺彈窗添加成功,而點擊“重置”時,清空表單中的所有內容,
首先我們給確定按鈕添加系結事件:
self.pushButton.clicked.connect(lambda: self.submit_form())
然后添加系結事件的詳情:
def submit_form(self):
input_name = self.lineEdit.text()
input_username = self.lineEdit_2.text()
input_password = self.lineEdit_3.text()
input_sex = self.comboBox.currentText()
input_remark = self.textEdit.toPlainText()
print(input_name)
print(input_username)
print(input_password)
print(input_sex)
print(input_remark)
reply = QMessageBox.information(MainWindow, '成功', '提交成功', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if reply == QMessageBox.Yes:
print('ok')
else:
print('cancel')
那么其中的邏輯部分就完成了!至于重置功能,可以自己試一下~

以下是所有代碼:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(463, 391)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(70, 40, 72, 15))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(70, 80, 72, 15))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(70, 120, 72, 15))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(70, 160, 72, 15))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(Dialog)
self.label_5.setGeometry(QtCore.QRect(70, 200, 72, 15))
self.label_5.setObjectName("label_5")
self.lineEdit = QtWidgets.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(120, 80, 251, 21))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(Dialog)
self.lineEdit_2.setGeometry(QtCore.QRect(120, 120, 251, 21))
self.lineEdit_2.setObjectName("lineEdit_2")
self.lineEdit_3 = QtWidgets.QLineEdit(Dialog)
self.lineEdit_3.setGeometry(QtCore.QRect(120, 40, 251, 21))
self.lineEdit_3.setObjectName("lineEdit_3")
self.textEdit = QtWidgets.QTextEdit(Dialog)
self.textEdit.setGeometry(QtCore.QRect(120, 190, 251, 87))
self.textEdit.setObjectName("textEdit")
self.comboBox = QtWidgets.QComboBox(Dialog)
self.comboBox.setGeometry(QtCore.QRect(120, 160, 87, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(80, 320, 61, 28))
self.pushButton.setObjectName("pushButton")
self.pushButton.clicked.connect(lambda: self.submit_form())
self.pushButton_2 = QtWidgets.QPushButton(Dialog)
self.pushButton_2.setGeometry(QtCore.QRect(180, 320, 61, 28))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(Dialog)
self.pushButton_3.setGeometry(QtCore.QRect(280, 320, 61, 28))
self.pushButton_3.setObjectName("pushButton_3")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "用戶:"))
self.label_2.setText(_translate("Dialog", "賬號:"))
self.label_3.setText(_translate("Dialog", "密碼:"))
self.label_4.setText(_translate("Dialog", "性別:"))
self.label_5.setText(_translate("Dialog", "備注:"))
self.comboBox.setItemText(0, _translate("Dialog", "男"))
self.comboBox.setItemText(1, _translate("Dialog", "女"))
self.pushButton.setText(_translate("Dialog", "確定"))
self.pushButton_2.setText(_translate("Dialog", "重置"))
self.pushButton_3.setText(_translate("Dialog", "取消"))
def submit_form(self):
input_name = self.lineEdit.text()
input_username = self.lineEdit_2.text()
input_password = self.lineEdit_3.text()
input_sex = self.comboBox.currentText()
input_remark = self.textEdit.toPlainText()
print(input_name)
print(input_username)
print(input_password)
print(input_sex)
print(input_remark)
reply = QMessageBox.information(MainWindow, '成功', '提交成功', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if reply == QMessageBox.Yes:
print('ok')
else:
print('cancel')
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_Dialog()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
運行結果如下:


🏳??🌈關注蘇州程式大白,持續更新技術分享,謝謝大家支持🏳??🌈

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/297588.html
標籤:python
