PyQT5入门案例(一)工资统计系统

简介: PyQT5入门案例(一)工资统计系统

代码和相关学习的知识点都是参考上述视频


接下来我们要开发我们的第一个python GUI,统计如下人员工资在2W以上和2W以下的人员的总数


统计数据:

可以自行制作,也可以直接复制:


薛蟠     4560 25
薛蝌     4460 25
薛宝钗   35776 23
薛宝琴   14346 18
王夫人   43360 45
王熙凤   24460 25
王子腾   55660 45
王仁     15034 65
尤二姐   5324 24
贾芹     5663 25
贾兰     13443 35
贾芸     4522 25
尤三姐   5905 22
贾珍     54603 35

当然,如何修改handleCalc这个函数里面修改即可,这里只讲述GUI的制作方法,具体数据提取过程不讲述


未整合成对象的源代码:

代码GUI设置部分注释很详细,有问题可以在评论中指出

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit, QMessageBox # 导入相应的库,应用程序,主窗口,按钮,纯文本的编辑框,信息窗口
def handleCalc():
    print('统计按钮被点击了')
    info = 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(window,
                '统计结果',
                f'''薪资20000 以上的有:\n{salary_above_20k}
                \n薪资20000 以下的有:\n{salary_below_20k}'''
                )
app = QApplication([]) #创建一个底层管理程序,传入空的(默认)
window = QMainWindow()#申请主窗口对象
window.resize(500, 400)   #定义主窗口外观大小 , 500像素宽度,400像素宽度
window.move(300, 310)    #程序窗口左上角在显示器的位置,可以理解成你的gui出现在屏幕的位置(坐标)
window.setWindowTitle('薪资统计')  #设置窗口标题栏
textEdit = QPlainTextEdit(window) #创建一个纯文本控件,传入第一个界面作为主控件
textEdit.setPlaceholderText("请输入薪资表")#提示文本
textEdit.move(10,25) #标题相对于第一个主控件的位置坐标 (10像素 , 25像素)
textEdit.resize(300,350)# 定于窗口大小
button = QPushButton('统计', window) #定于统计按钮
button.move(380,80)#相对于第一个 windows主控件的位置
button.clicked.connect(handleCalc)
window.show() #显示窗口
app.exec_() #循环显示界面,等待用户指令


程序运行过程:

点击run,运行程序


image.png


从我的博客上复制数据,进行数据输入,也可以自己制作自己的数据


image.png


鼠标点击统计


image.png


输入结果


image.png


     考虑到我们写GUI的过程中一个窗口的内容,就使用了大量的全局变量。这样对于我们对自己的GUI进行复杂功能拓展的时候,会导致需要设置较多的全局变量,从而导致我们的代码变的非常乱,和复杂。因此我们需要将一个或者一类的功能封装成一个对象。


封装对象代码:

代码跟上部分未封装的部分一模一样,只是封装成对象方便调用和管理,不懂的地方可以看上部分代码的注释, 代码实现的功能与上部分代码一样。

from PySide2.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)
    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_()
相关文章
|
3月前
|
JavaScript 前端开发 数据可视化
[NMP v2] NeteaseMiniPlayer v2 搭建个人网站网易云迷你播放器
NeteaseMiniPlayer v2 [NMP v2]是一款高颜值、无依赖的前端嵌入式网易云音乐迷你播放器,,轻松部署于个人网站,提升音网站体验。
314 6
[NMP v2] NeteaseMiniPlayer v2 搭建个人网站网易云迷你播放器
|
缓存 网络协议 5G
剖析KCP以及KCP在游戏中是如何使用的
剖析KCP以及KCP在游戏中是如何使用的
|
3月前
|
API 开发者 数据采集
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
2025反向海淘新机遇:依托代购系统,聚焦小众垂直品类,结合Pandabay数据选品,降本增效。系统实现智能翻译、支付风控、物流优化,助力中式养生茶等品类利润翻倍,新手也能快速入局全球市场。
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
|
NoSQL Java 中间件
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
505 1
|
项目管理 iOS开发 UED
Mac用户必备的任务管理软件!三款高效工具推荐
本文介绍了Mac系统在项目管理和任务管理方面的独特优势,包括用户体验、系统生态整合和隐私安全等方面。针对Mac用户的需求,推荐了三款高效任务管理软件:板栗看板、OmniFocus和Things 3。板栗看板适合团队协作,OmniFocus适合高需求的个人用户,Things 3则以简洁美观的界面和易用性著称。文章详细分析了每款软件的特点和适用场景,帮助用户选择最合适的工具。
731 6
|
存储 Serverless 数据库
OceanBase索引优化
【8月更文挑战第14天】OceanBase索引优化
408 5
|
JavaScript Java 测试技术
基于微信小程序的学生签到系统+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的学生签到系统+springboot+vue.js附带文章和源代码设计说明文档ppt
240 0
基于微信小程序的学生签到系统+springboot+vue.js附带文章和源代码设计说明文档ppt
|
供应链 安全 算法
艾瑞咨询最新研报:新迪天工CAD达到国际先进水平
三维CAD软件是最核心、最基础的工业软件之一,其数据模型是产品数字化的源头,已经成为了现代工程设计和制造必不可少的工具。
|
人工智能 Java 数据库连接
推荐51个 IDEA 常用的插件
在日常撸代码的时候,相信兄弟们在IDEA 中用到不少插件,利用插件,不仅可以提高工具效率,撸起代码来,也格外的娃哈哈……
1960 0
|
存储 Windows
技术好文共享:(翻译)libusb
技术好文共享:(翻译)libusb
376 0

热门文章

最新文章