PyQt6的开发流程(密码生成小程序为例)



文章目录

  • PyQt6的开发流程(密码生成小程序为例)
  • 一、流程介绍与概览
  • 1. 界面与逻辑分离的开发流程
  • 2. PyQt6的开发流程
  • 二、打开 designer.exe 创建文件
  • 三、用QT设计师绘制界面保存成ui
  • 1. QT常用组件介绍
  • 2. 密码生成小程序界面设计
  • 四、用pyuic6把ui文件转换成python文件
  • 五、界面与逻辑分离的方法编写主程序
  • 六、编写信号处理函数(点击按钮做操作)
  • 七、使用pyinstaller打包成exe程序



  1. 用 QT 设计师绘制界面保存成 ui 文件
  2. 用 pyuic6 把 ui 文件转换成 python 文件
  3. 界面与逻辑分离的方法编写主程序
  4. 编写信号处理函数(点击按钮做操作)
  5. 使用 pyinstaller 打包成 exe 程序

一、流程介绍与概览

1. 界面与逻辑分离的开发流程

python wifi密码本生成数字和英文_python

2. PyQt6的开发流程

python wifi密码本生成数字和英文_qt6.3_02

二、打开 designer.exe 创建文件

在cmd中打开conda环境,找到pyqt所在的位置进行复制。

python wifi密码本生成数字和英文_pyqt_03


将复制的路径粘贴到文件夹的位置栏跳转到该文件夹,并且在右侧搜索框搜索designer.exe:

python wifi密码本生成数字和英文_qt_04


python wifi密码本生成数字和英文_qt_05


python wifi密码本生成数字和英文_qt6.3_06

三、用QT设计师绘制界面保存成ui

1. QT常用组件介绍

python wifi密码本生成数字和英文_python_07


python wifi密码本生成数字和英文_pyqt_08

python wifi密码本生成数字和英文_qt6.3_09

2. 密码生成小程序界面设计

python wifi密码本生成数字和英文_qt6.3_10


对界面内容进行垂直布局

python wifi密码本生成数字和英文_qt6.3_11


垂直布局结果:

python wifi密码本生成数字和英文_pyqt_12


修改界面的标题title->windowTitle

python wifi密码本生成数字和英文_pyqt_13


选中整个界面框修改其名字(整个界面框的名字将在执行pyuic6 password_generate.ui -o password_generate.py命令将password_generate.ui文件生成password_generate.py文件中的类名Ui_PasswordGenerate):

python wifi密码本生成数字和英文_qt6.3_14


修改界面中组件的名字objectname,在程序中要利用改名字写具体的函数命令:

python wifi密码本生成数字和英文_qt6.3_15

Ctrl+S保存界面的ui文件:

python wifi密码本生成数字和英文_pyqt_16


保存文件之后名字在上方显示:

python wifi密码本生成数字和英文_python_17

四、用pyuic6把ui文件转换成python文件

激活pyqt环境

conda activate pyqt

利用pyuic6将.ui文件转成.py文件

pyuic6 password_generate.ui -o password_generate.py

五、界面与逻辑分离的方法编写主程序

python wifi密码本生成数字和英文_qt_18


python wifi密码本生成数字和英文_python_19


每次都要在逻辑入口主程序中添加的固定内容如下图,需要修改3处

  • password_generate.ui界面生成的password_generate.py文件导入类Ui_PasswordGenerate
  • password_generate.py文件中,取类名Ui_PasswordGenerate下划线后的名字PasswordGenerate添加My改为MyPasswordGenerate作为主程序中的类名;
  • 实例化的时候将大写名字改为小写

python wifi密码本生成数字和英文_qt_20


固定内容的代码,拷贝到main文件中进行修改

from PyQt6.QtWidgets import (
    QApplication, QDialog
)
from password_generate import Ui_PasswordGenerate
import sys


class MyPasswordGenerate(Ui_PasswordGenerate, QDialog):
    def __init__(self):
        super().__init__()

        self.setupUi(self)  # 使用父类 Ui_PasswordGenerate 中的 setupUi 函数

        self.show()  # 展示窗口


if __name__ == '__main__':
    app = QApplication(sys.argv)  # 一个程序本身一定有个入口,创建 QApplication 来启动 Dialog 窗口

    myPasswordGenerate = MyPasswordGenerate()

    sys.exit(app.exec())

main程序直接运行即可出界面:

python wifi密码本生成数字和英文_python_21

六、编写信号处理函数(点击按钮做操作)

python wifi密码本生成数字和英文_qt_22

此处添加了信息弹窗提示以及绑定了pushButton的点击命令

添加信息弹窗类QMessageBox

python wifi密码本生成数字和英文_python_23


绑定pushButton的点击命令:

python wifi密码本生成数字和英文_qt_24


pushButton绑定命令执行的具体函数:

python wifi密码本生成数字和英文_qt_25


完整代码如下:

from PyQt6.QtWidgets import (
    QApplication, QDialog, QMessageBox
)
from password_generate import Ui_PasswordGenerate
import sys
import string
import random


class MyPasswordGenerate(Ui_PasswordGenerate, QDialog):
    def __init__(self):
        super().__init__()

        self.setupUi(self)  # 使用父类 Ui_PasswordGenerate 中的 setupUi 函数

        self.show()  # 展示窗口

        self.pushButton.clicked.connect(
            self.new_password
        )

    def new_password(self):
        words = (
            string.digits
            + string.ascii_uppercase
            + string.ascii_lowercase
            + string.punctuation
        )

        words = random.sample(list(words), 20)
        password = "".join(words)

        self.lineEdit.setText(password)

        QMessageBox.information(
            self, "信息提示", "密码生成成功"
        )


if __name__ == '__main__':
    app = QApplication(sys.argv)  # 一个程序本身一定有个入口,创建 QApplication 来启动 Dialog 窗口

    myPasswordGenerate = MyPasswordGenerate()

    sys.exit(app.exec())

七、使用pyinstaller打包成exe程序

python wifi密码本生成数字和英文_pyqt_26


打开cmd,在文件目录下打包main文件:

pyinstaller -F -w password_generate_main.py

python wifi密码本生成数字和英文_pyqt_27