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_()
相关文章
用xls制作每位学生的成绩折线图,学生成绩趋势一目了然!
当我们想看清每位同学的成绩浮动情况时,就相当麻烦。
1513 0
|
8天前
|
Python
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
|
3月前
|
JavaScript Java 测试技术
基于微信小程序的企业职工薪资查询系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的企业职工薪资查询系统的设计与实现(源码+lw+部署文档+讲解等)
|
3月前
|
测试技术 Python
279: 人数统计(python)
279: 人数统计(python)
|
数据挖掘 索引 Python
Python案例实现|租房网站数据表的处理与分析
在综合实战项目中,“北京链家网”租房数据的抓取任务已在 上一篇 完成,得到了数据表bj_lianJia.csv,如图1所示。该数据表包含ID、城区名(district)、街道名(street)、小区名(community)、楼层信息(floor)、有无电梯(lift)、面积(area)、房屋朝向(toward)、户型(model)、房租(rent)等信息。
189 1
Python案例实现|租房网站数据表的处理与分析
|
11月前
|
数据安全/隐私保护 Python
【python实现学生选课系统】
【python实现学生选课系统】
200 0
|
存储 Java 应用服务中间件
Java统计用户在线人数,这样做才优雅
统计用户在线人数 在统计用户在人数的时候,我们用到了监听器,监听器大致分为以下三种: 1. ServletRequestListener:用于监听请求的监听接口 2. HttpSessionListener:用于监听会话的监听接口 3. ServletContextListener:用于监听应用的回话接口
228 1
|
Python
python实现简易的学生成绩管理
python实现简易的学生成绩管理
126 0
|
小程序 前端开发 JavaScript
基于uniapp的学生(选课)成绩小程序
本系统2022年4月创作完成,该系统包含小程序端和管理端,适合选题:小程序、学生成绩、学生选课、成绩管理。系统小程序端采用uniapp+uview实现,小程序接口和管理端采用springboot+mybatis开发,使用mysql数据库,下面是大概的功能。
基于uniapp的学生(选课)成绩小程序