python GUI编程——PyQt学习一

python GUI编程——PyQt学习一


前言

在python中有许多用于GUI编程的工具包,PyQt就是其一,本系列文章主要是应用该包来学习GUI编程。


一、GUI与PyQt6介绍

GUI编程(Graphical User Interface Programming)是指通过图形化界面与用户进行交互、操作计算机的过程。相比于使用命令行界面,GUI界面更加直观、易于操作,提供了丰富的用户交互方式,如窗口、按钮、菜单、文本框等组件。

GUI编程有许多不同的框架和工具可供选择,如PyQt、Tkinter、wxPython等。而PyQt6就是PyQt框架的一个较新的版本。

PyQt6是一个创建GUI应用程序的工具包,它是python编程语言和Qt库的融合。示例:

from PyQt6.QtWidgets import (
    QApplication, QDialog,QPushButton,QHBoxLayout,QMessageBox
)
import sys

if __name__ == "__main__":
    app = QApplication(sys.argv)  # 创建QApplication对象,作为GUI程序的主要入口
	#将sys.argv列表传递给QApplication构造函数,以便让QApplication获取到命令行参数,以便在应用程序中使用。

    window = QDialog()  # 创建一个对话框窗口
    window.resize(500,300)  # 调整窗口大小为宽度500,高度300

    def show_msg():
        QMessageBox.information(window,"信息提示","你点击了我")  # 弹出一个消息对话框,显示"你点击了我"

    hbox = QHBoxLayout()  # 创建水平布局管理器
    button = QPushButton("快点击我!")  # 创建一个按钮控件,文本为"快点击我!"
    button.clicked.connect(show_msg)  # 将按钮的点击事件与show_msg函数连接起来

    hbox.addWidget(button)  # 将按钮添加到布局管理器中
    window.setLayout(hbox)  # 在窗口中设置布局管理器

    window.show()  # 显示窗口

    sys.exit(app.exec())  # 运行程序的主循环,直到窗口被关闭或程序退出

在这里插入图片描述

二、生成一个简单程序

2.1. 使用QT设计师绘制界面

下载地址:
https://build-system.fman.io/qt-designer-download

有关汉化,请参考以下文章:
https://blog.csdn.net/qq_38463737/article/details/107221910

在这里插入图片描述

通过”堆积木“构建程序界面:

在这里插入图片描述

2.2. 在pycharm中将ui文件转换为py文件

在将QT设计师中得到的界面保存后得到ui文件,之后我们要将ui文件转换为py文件。

在这里插入图片描述

有一个方法是直接在pycharm中生成一个专门转换的外部工具

打开设置中的工具中的外部工具,添加外部工具
在这里插入图片描述

名称自己定;
程序: 填写配置的解释器路径;

#实参:
-m PyQt6.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
#工作目录:
$FileDir$ 

在这里插入图片描述

然后选中ui文件,右键点击刚才创建的外部工具。

在这里插入图片描述

2.3. 编写主程序

采用界面与逻辑分离方法来编写主程序。

import random
import string
import sys

from PyQt6.QtWidgets import (
    QApplication, QDialog, QMessageBox
)

from password_generate import Ui_PasswordGenerate #这既是上面转化来的py文件


class MyPasswordGenerate(Ui_PasswordGenerate, QDialog):
    def __init__(self):
        super().__init__()  # 初始化父类本身的内存位置,以便直接访问父类的属性对象

        self.setupUi(self) #将UI界面显示出来
        
        self.show()
        self.pushButton.clicked.connect(
            self.new_password  # 将按钮点击事件与new_password方法连接起来
        )

    def new_password(self):  # 编写信号处理函数
        site = self.lineEdit_site.text()
        if not site:
            QMessageBox.warning(self, "信息提示", "请输入site")
            return
        words = [] #构建一个包含候选字符的列表
        if self.checkBox_upper.isChecked():
            words.append(string.ascii_uppercase *2)
        if self.checkBox_lower.isChecked():
            words.append(string.ascii_lowercase *2)
        if self.checkBox_digit.isChecked():
            words.append(string.digits *2)
        if self.checkBox_puc.isChecked():
            words.append(string.punctuation *2)
        if not words:
            words = (
                    string.digits + string.ascii_uppercase + string.ascii_lowercase + string.punctuation
            )  # 候选字符
        else:
            words = "".join(words)

        words = random.sample(list(words), 20)  # 随机生成
        password = "".join(words)  # 变为字符串
        self.lineEdit_result.setText(password)  # 写入
        with open("我的密码本.txt","a",encoding= "utf-8") as f:
            f.write(f"{site}\t{password}\n")

        QMessageBox.information(self, "信息提示", "密码设置成功")  # 弹出信息提示,显示密码设置成功的消息


if __name__ == "__main__":
    app = QApplication(sys.argv)
    MyPasswordGenerate = MyPasswordGenerate() #创建实例
    sys.exit(app.exec())

在这里插入图片描述

2.4. 使用pyinstaller打包为exe小程序

先打开pycharm下方的Terminal终端
下载pyinstaller

pip install pyinstaller

表示已经安装好:
在这里插入图片描述

如果出现这种情况,说明pathlib包与pyinstaller包不兼容,我们要删去pathlib包

在这里插入图片描述

我试着用 pip uninstall 删除,结果报错:

在这里插入图片描述
应该是要以管理员身份运行的,可以打开windows的终端管理员来运行卸载命令。

调用命令生成:

在这里插入图片描述

可以在dist文件夹中找到exe文件,成功生成exe文件

在这里插入图片描述

在这里插入图片描述


总结

本章简单记录了什么是GUI编程,并且介绍了PyQt6这个创建GUI应用程序的工具包。最后就是生成了一个简单的密码生成器小程序。

寂兮寥兮,独立而不改,周行而不殆,可以为天下母。

–2023-10-3 筑基篇

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星石传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值