暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PYQT5|python图形界面可视化设计

秋恋猫 2022-02-10
1487
去年三月份写了一份办公自动化的代码,主要是用来统计电子文档。但是缺点很明显,学号和姓名都是写死的,完全依赖于python环境,可视化效果差。



后来再次修改,学号和姓名是可以从excel文件中获取,但是仍然依赖于python环境。


后来接触了pyqt5,进行了一些简单的界面设计,又将代码打包成exe文件。此时的电子文档统计软件不依赖于用户环境,使用只需要下载exe文件即可。界面如下,当时不是很熟悉pyqt5就将学号和姓名全都写死了,仅限在自己班级使用。


在学习pyqt5的时候,又将代码优化了一下,采用了模块化设计,重新设计了界面,GUI采用自定义模式。优化内容如下:
  1. 使用qss样式和图片进行简单装饰

  2. 增加读取学号和姓名的功能

  3. 查询结果中增加查询时间,以及截止日期等信息

  4. 增加一键复制功能

  5. 添加记录功能,每次打开软件,会自动显示上次输入的内容,无需重复操作




这个界面也是比较丑,后续有空会慢慢优化。文件结构如下:


  1. blog主要存放日志文件

  2. picture用来存放图片

  3. pyqt包含qss样式以及主函数


公众号回复"pyqt5",即可获取一份python GUI教程,这教程是我目前发现最详细的。
代码展示:
1.读取文件信息
class Read:
    def __init__(self):
        pass

    def num(self, excel_dir1):
        '''

        :param excel_dir1: 名单表格路径
        :return: 返回学号
        '''

        //省略

        return num_list

    def name(self, excel_dir1):
        '''

        :param excel_dir1: 名单表格路径
        :return: 返回所有名称
        '''

    //省略
        return name_list

    def class_num(self, excel_dir1):
        '''

        :param excel_dir1: 名单表格路径
        :return: 返回班级
        '''

       //省略
        return class_list



2.查询结果


class Query:
    def __init__(self):
        pass

    def have_query(self, file_dir):
        '''

        :param file_dir: 文件夹路径
        :return:已经上交的名单列表
        '''

       //省略
        return have_query

    def have_not_query(self, file_dir,excel_dir):
        '''

        :param file_dir: 文件夹路径
        :param excel_dir: excel路径
        :return: 没有上交的名单列表
        '''

       //省略
        return k

    def check(self, file_dir, excel_dir):
        '''
        :param file_dir: 文件夹路径
        :param excel_dir: excel表格路径
        :return:错误名单
        '''

        //省略
        return error_list

    def conclusion(self, file_dir, excel_dir):
        '''
        :param file_dir: 文件夹路径
        :param excel_dir: excel表格路径
        :return: 返回班级未交人数、已交人数
        '''

        
    def all_number(self, excel_dir):
        read1 = Read
        num = read1.num(Read, excel_dir)
        return len(num)


3.获取时间信息


class Time:
    def __init__(self):
        pass

    def get_time(self):
        time_tuple = time.localtime(time.time())
        week = eval(time.strftime("%w", time_tuple))
        ......//省略
        gettime = "{}年{}月{}日{}点{}分{}".format(time_tuple[0], time_tuple[1], time_tuple[2],  time_tuple[3],
                                              time_tuple[4], a)
        return gettime


4.GUI设计

class Window(QWidget):
    def __init__(self):
        super().__init__()

        self.button_excle = QPushButton(self)
        self.text = QLineEdit(self)
        self.text_last_data=QLineEdit(self)
        self.button_dir = QPushButton(self)
        self.text_dir = QLineEdit(self)
        self.setWindowTitle('电子文档统计')
        self.setStyleSheet('Window{background:#F8F8FF;}')
        self.setFixedSize(1300730)
        self.last_text = QTextEdit(self)
        self.a = []
        self.dirread = ''
        self.excel_file = ''
        self.dirs = ''
        self.btn_begin = QPushButton(self)
        self.btn_copy = QPushButton(self)
        self.lab_last_text = QLabel(self)
        self.setup_ui()





文章转载自秋恋猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论