Python图形界面开发——PySide2库

  • Python知识点总结(1)
  • Python知识点总结(2)
  • Python开发案例(学生信息管理系统)
  • Python图形界面开发——PySide2库

目录

1. 简介与安装

2. 基本结构

导入需要的库

程序主体内容

程序启动维持

3. 使用designer开发图形界面

4. 打包发布

1. 简介与安装

基于Qt 的Python库(PySide2(Qt亲儿子,自己开发的库)、PyQt5(Qt干儿子,收购的库)):

优点:控件比较丰富、跨平台体验好、文档完善、用户多。

缺点: 库比较大,发布出来的程序比较大。

调用cmd,安装PySide2的语句:

pip install PySide2

2. 基本结构

  • 导入需要的库

案例:


from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit,QMessageBox
'''
QtWidgets 专门负责Qt里控件窗口的图形功能
下属类:
    QApplication    应用程序
    QMainWindow     主窗口
    QPushButton     按钮
    QPlainTextEdit  纯文本的编辑框
    QMessageBox     弹出对话框
'''
  • 程序主体内容

案例:

class Stats:
    # 设定窗口本身特性
    def __init__(self):
        self.window = QMainWindow()  # 创建主窗口,定义主窗口
        self.window.resize(500, 400)  # 定义初始化大小
        self.window.move(300, 310)  # 启动程序的窗口位置,距离左边和上边的距离
        self.window.setWindowTitle('薪资统计')  # 窗口标题栏名称

        self.textEdit = QPlainTextEdit(self.window)  # 创建文本编辑框
        self.textEdit.setPlaceholderText("请输入薪资表")  # 文本编辑框的提示文本
        self.textEdit.move(10, 25)  # 编辑框位置,距离父窗口的左边和上边的距离
        self.textEdit.resize(300, 350)  # 文本框大小

        self.button = QPushButton('统计', self.window)  # 创建按钮
        self.button.move(380, 80)  # 按钮位置
        self.button.clicked.connect(self.handleCalc)  # 将信号通过槽 slot 连到 handleCalc. 用handleCalc处理点击事件

    # 内置方法——程序执行内容
    def handleCalc(self):
        info = self.textEdit.toPlainText()

        # 薪资20000 以上 和 以下 的人员名单
        salary_above_20k = ''
        salary_below_20k = ''
        for line in info.splitlines():
            if not line.strip():
                continue
            parts = line.split(' ')
            # 去掉列表中的空字符串内容
            parts = [p for p in parts if p]
            name,salary,age = parts
            if int(salary) >= 20000:
                salary_above_20k += name + '\n'
            else:
                salary_below_20k += name + '\n'

        QMessageBox.about(self.window,
                    '统计结果',
                    f'''薪资20000 以上的有:\n{salary_above_20k}
                    \n薪资20000 以下的有:\n{salary_below_20k}'''
                    )
  • 程序启动维持

案例:

app = QApplication([])  # (创建这个对象)提供整个图形界面程序的底层管理功能
starts=Stats()        # 启动界面程序
starts.window.show()   # 执行窗口程序的展示
app.exec_()     # 进入该程序的事件处理循环,等待用户的输入

运行效果:

Python图形界面开发——PySide2库_第1张图片

若运行时出现以下错误,可查看PySide2安装完无法使用的问题解决方案

Python图形界面开发——PySide2库_第2张图片

3. 使用designer开发图形界面

在基本结构第二部分程序主体内容中,除了自行定义窗口属性外,可采用PySide2自带的designer开发图形界面更加方便,找到安装PySide2的路径:

Python图形界面开发——PySide2库_第3张图片

可在designer里设计图形界面,案例如下:

Python图形界面开发——PySide2库_第4张图片

 

设计完成后,保存.ui格式文件,并将该文件放置在项目开发文件下

程序主体内容中,对于程序执行内容几乎不变,对于窗口特性设定,可实例化从designer设计的.ui文件,如下所示:

class Stats:
  # 设定窗口本身特性
    def __init__(self):
        # 从文件中加载UI定义
        qfile_stats=QFile('UI/stats.ui')
        qfile_stats.open(QFile.ReadOnly)
        qfile_stats.close()

        # 从UI定义中动态创建一个响应的窗口对象
        # 注意:里面的空间对象也成为了窗口对象的属性了
        # 比如 self.ui.button, self.ui.textEdit
        self.ui=QUiLoader().load(qfile_stats)
        self.ui.button.clicked.connect(self.handleCalc)

     # 内置方法——程序执行内容
    def handleCalc(self):
        info = self.ui.textEdit.toPlainText()

        # 薪资20000 以上 和 以下 的人员名单
        salary_above_20k = ''
        salary_below_20k = ''
        for line in info.splitlines():
            if not line.strip():
                continue
            parts = line.split(' ')
            # 去掉列表中的空字符串内容
            parts = [p for p in parts if p]
            name,salary,age = parts
            if int(salary) >= 20000:
                salary_above_20k += name + '\n'
            else:
                salary_below_20k += name + '\n'

        QMessageBox.about(self.ui,
                    '统计结果',
                    f'''薪资20000 以上的有:\n{salary_above_20k}
                    \n薪资20000 以下的有:\n{salary_below_20k}'''
                    )

导入的库做更新:

from PySide2.QtWidgets import QApplication,QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
from PySide2.QtGui import QIcon # 导入加入图标库

后续执行程序启动也做相应更改:(加入了更改图标语句)

app = QApplication([])  # (创建这个对象)提供整个图形界面程序的底层管理功能
app.setWindowIcon(QIcon('1.png')) # 加载主窗口Icon
starts=Stats()
starts.ui.show()   # 执行窗口程序的展示
app.exec_()     # 进入该程序的事件处理循环,等待用户的输入

运行效果如下:

Python图形界面开发——PySide2库_第5张图片

4. 打包发布

在使用Qt的pyside2库编写的图形界面程序,在导出exe时,建议以下操作步骤:

1. 更改cmd的执行路径到建立的python项目的路径下

Python图形界面开发——PySide2库_第6张图片

2. 执行导出语句(包含有logo的打包)

pyinstaller demo1.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"

3. 最后将涉及到的ui文件(使用designer设计的ui)和图形文件复制到dist的打包完成程序中

Python图形界面开发——PySide2库_第7张图片

 

感谢 白月黑羽的Python教程

你可能感兴趣的:(Python图形界面开发——PySide2库)