【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_()     # 进入该程序的事件处理循环,等待用户的输入

运行效果:

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

3. 使用designer开发图形界面

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

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

 

设计完成后,保存.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_()     # 进入该程序的事件处理循环,等待用户的输入

运行效果如下:

4. 打包发布

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

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

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

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

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

 

感谢 白月黑羽的Python教程

好的,下面是 Python PySide2 编程实现一个简单的用户登录界面的步骤及源码: 步骤: 1. 导入 PySide2.QtWidgets 模块 2. 创建应用程序对象 QApplication 3. 创建主窗口对象 QMainWindow 4. 在主窗口中添加控件,如标签、输入框、按钮等 5. 为按钮绑定事件,实现登录逻辑 6. 启动应用程序的主循环 源码如下: ```python import sys from PySide2.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton, QMessageBox class LoginWindow(QMainWindow): def __init__(self): super().__init__() # 设置窗口标题、大小、位置等属性 self.setWindowTitle("用户登录") self.setGeometry(500, 200, 300, 200) # 创建标签,显示用户名和密码 self.label_username = QLabel(self) self.label_username.setText("用户名:") self.label_username.move(50, 30) self.label_password = QLabel(self) self.label_password.setText("密 码:") self.label_password.move(50, 70) # 创建输入框,用于输入用户名和密码 self.entry_username = QLineEdit(self) self.entry_username.move(110, 30) self.entry_password = QLineEdit(self) self.entry_password.move(110, 70) self.entry_password.setEchoMode(QLineEdit.Password) # 设置密码不可见 # 创建按钮,用于登录 self.button_login = QPushButton(self) self.button_login.setText("登录") self.button_login.move(130, 120) self.button_login.clicked.connect(self.login) # 绑定登录事件 def login(self): username = self.entry_username.text() password = self.entry_password.text() if username == "admin" and password == "123456": QMessageBox.information(self, "登录成功", "欢迎使用!") else: QMessageBox.warning(self, "登录失败", "用户名或密码错误!") if __name__ == "__main__": app = QApplication(sys.argv) login_window = LoginWindow() login_window.show() sys.exit(app.exec_()) ``` 这是一个简单的用户登录界面,包含了用户名、密码输入框和登录按钮,用户输入用户名和密码后,点击登录按钮即可进行登录。如果用户名和密码正确,会显示登录成功的提示框,否则会显示登录失败的提示框。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝色蛋黄包

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

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

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

打赏作者

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

抵扣说明:

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

余额充值