前言
通过pyqt开发出一款答题的软件。
项目背景
在学习了pyqt 的基础知识后,尝试制作一款可以答题的可视化程序。
关键技术
python pyqt
项目流程
基本思路
①构思样式图,完成界面设置,设置简单的槽函数
②解决多界面互动问题
③优化
第一步:构思样式图,完成界面设置,设置简单的槽函数
构思样式图。为上下结构。上部为“问题描述”,下部为“选项”。
如下代码为例:
1 | class Ui_MainWindow(Object):import sys |
设置槽函数
选到某个选项,就弹出对应的窗口,选到错误的甚至可以结束程序。
1 | class RadioDemo(QWidget): |
第二步:解决多界面互动问题
可以采用抽屉结构。在底部添加,“上一题”、“下一题”按钮。但是这种设计不够极简。
我们放弃这种结构。去掉多余的按钮。选了选项后,直接进入下一题,或结束程序。
main.py
1 | # -*- coding: utf-8 -*- |
question_1.py
1 | # -*- coding: utf-8 -*- |
第三步:优化
去掉标题栏
1 | from PyQt5 import Qt |
1 | self.Form.setWindowFlags(Qt.Qt.CustomizeWindowHint) # 去掉标题栏的代码 |
利用qt_material进行主题设置。
1 | from qt_material import apply_stylesheet |
1 | apply_stylesheet(self.app, theme='dark_cyan.xml') |
qt_material自带了很多的主题,可以通过方法
list_themes
来查看。
1 | 'dark_amber.xml', |
可优化之处
①弹窗全部使用的QMessageBox.Warning。使用其他类型均会出现程序卡死,问题尚待解决
②打包生成的exe太大,程序起步运行太慢。下次应在虚拟环境进行打包
③使用的主题,不太符合预期。应学习如何自己调整各种参数。
④多界面互动的问题,仍可寻求其他方法。