QT学习笔记——第一个小栗子

本人学习例子基于如下教程

安装

按照教程介绍,PySide2/PySide6、PyQt5/PyQt6差距不算大,没太大区别,在开源和商用的区别。在已有的pyhon环境下直接安装

pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyside2 -i https://pypi.douban.com/simple/
pip install pyqt6-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

第一个代码例子

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit,QMessageBox

class Stats():
    def __init__(self):
        self.window = QMainWindow() #创建主窗口
        self.window.resize(500, 400)#决定大小
        self.window.move(300, 300)#确定位置
        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)#把 button 被 点击(clicked) 的信号(signal), 连接(connect)到了 handleCalc 这样的一个 slot上

    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()# 底层管理功能 
stats=Stats()
stats.window.show()
app.exec()#进入事件处理单元

1. 导入必要的模块

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit, QMessageBox

说明:

  • QApplication:用于管理应用程序的底层功能,例如事件循环、窗口管理等。
  • QMainWindow:主窗口类,用于创建应用程序的主窗口。
  • QPushButton:按钮控件,用于创建可点击的按钮。
  • QPlainTextEdit:文本编辑框控件,用于输入和显示多行文本。
  • QMessageBox:消息框控件,用于显示提示信息、警告或错误信息。

2. 定义 Stats

Stats 类是程序的核心,用于创建主窗口并实现薪资统计功能。

class Stats():
    def __init__(self):
        self.window = QMainWindow()  # 创建主窗口
        self.window.resize(500, 400)  # 设置窗口大小为 500x400 像素
        self.window.move(300, 300)  # 将窗口移动到屏幕的 (300, 300) 位置
        self.window.setWindowTitle('薪资统计')  # 设置窗口标题为“薪资统计”

        self.textEdit = QPlainTextEdit(self.window)  # 创建文本编辑框,并设置父窗口为 self.window
        self.textEdit.setPlaceholderText("请输入薪资表")  # 设置文本编辑框的占位符文本
        self.textEdit.move(10, 25)  # 将文本编辑框移动到窗口的 (10, 25) 位置
        self.textEdit.resize(300, 350)  # 设置文本编辑框的大小为 300x350 像素

        self.button = QPushButton('统计', self.window)  # 创建一个按钮,并设置按钮文本为“统计”
        self.button.move(380, 80)  # 将按钮移动到窗口的 (380, 80) 位置
        self.button.clicked.connect(self.handleCalc)  # 将按钮的点击事件连接到 handleCalc 方法

说明:

  • __init__ 方法中,创建了一个 QMainWindow 作为主窗口,并设置了窗口的大小和标题。
  • 创建了一个 QPlainTextEdit 控件,用于输入薪资信息,并设置了占位符文本。
  • 创建了一个 QPushButton 按钮,点击时触发薪资统计功能,并通过信号与槽机制连接到 handleCalc 方法。

3. 实现薪资统计逻辑

handleCalc 方法是薪资统计的核心逻辑。

def handleCalc(self):
    info = self.textEdit.toPlainText()  # 获取文本编辑框中的所有文本
    salary_above_20k = ''  # 用于存储薪资20000以上人员的名单
    salary_below_20k = ''  # 用于存储薪资20000以下人员的名单

    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:  # 判断薪资是否大于或等于20000
            salary_above_20k += name + '\n'  # 如果是,则将姓名添加到薪资20000以上名单
        else:
            salary_below_20k += name + '\n'  # 否则,将姓名添加到薪资20000以下名单

    QMessageBox.about(self.window,  # 弹出消息框显示统计结果
                      '统计结果',
                      f'''薪资20000 以上的有:\n{salary_above_20k}
                      \n薪资20000 以下的有:\n{salary_below_20k}'''
                      )

说明:

  • info.splitlines():将输入的多行文本按行拆分成列表。
  • line.split(' '):将每一行按空格分割为多个部分。
  • parts = [p for p in parts if p]:去掉分割后的空字符串部分,确保每个字段都有效。
  • int(salary):将薪资字符串转换为整数,进行比较。
  • 使用字符串拼接将薪资高于或低于 20000 的人员姓名分别存储到 salary_above_20ksalary_below_20k 中。
  • QMessageBox.about():显示弹出框,展示统计结果。

4. 主程序入口

app = QApplication()  # 创建 QApplication 实例,用于管理应用程序
stats = Stats()  # 创建 Stats 类的实例
stats.window.show()  # 显示主窗口
app.exec()  # 启动应用程序的事件处理循环

说明:

  • QApplication():创建应用程序实例,启动事件循环。
  • stats = Stats():创建 Stats 类实例,初始化并显示主窗口。
  • app.exec():进入事件循环,等待并响应用户的操作。

代码学习要点

1. PySide6 的基本组件

  • QApplication:应用程序的入口,负责管理全局资源。
  • QMainWindow:主窗口,可以包含菜单栏、工具栏、状态栏等。
  • QPlainTextEdit:用于输入和显示多行文本,适合处理简单的文本数据。
  • QPushButton:按钮控件,用于触发事件。
  • QMessageBox:用于显示提示信息,支持多种类型(如警告、信息、错误等)。

2. 信号与槽机制

  • self.button.clicked.connect(self.handleCalc):将按钮的点击事件(信号)连接到 handleCalc 方法(槽)。当按钮被点击时,handleCalc 方法会被调用。

3. 文本处理

  • self.textEdit.toPlainText():获取文本编辑框中的所有文本。
  • info.splitlines():将文本按行分割为一个列表。
  • line.split(' '):将每行按空格分割为多个部分。
  • int(salary):将字符串类型的薪资转换为整数。

4. 字符串拼接

  • 使用 += 操作符将名字逐行拼接到字符串中。虽然这种方法简单,但不推荐用于大量数据的拼接,因为性能较差。可以使用 str.join 方法优化。

5. 消息框的使用

  • QMessageBox.about():显示一个消息框,包含标题和内容。适合用于显示提示信息。

整体上难度不大,冲冲冲,就是简单的Python语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

tt555555555555

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

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

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

打赏作者

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

抵扣说明:

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

余额充值