Python GUI开发记录


1 学习历程

1.1学习库Tkinter,PySide2和PyQt5

1.学习Tkinter库时跟着视频教程设计了登录窗口 并配置了用户数据库,设置了按钮的回调函数,添加了提示窗口,为主界面添加了菜单栏并且设置了菜单栏选项的回调函数。

2.跟着白月黑羽课程学习PySide2库的使用和Qt Designer平台的界面布局,学习对GUI窗口的相关操作,了解了常用控件和对应的操作函数,实现了一个小实例-统计薪资水平,学习了用PyInstaller发布程序和为界面添加图标的方法。

3.PyQt5和PySide2操作类似,且使用更加方便,所以后面的设计采用PyQt5来完成,还学习了ui文件转py文件的方法,并且为我的pycharm配置了ui文件转py文件的快捷方式。

1.2使用Qt Designer搭建信号与系统虚拟实验平台界面

1.首先按照自己的想法设计了只有2层的系统界面,分别是连续和离散信号展示层、包含四个实验的实验层。

2.然后根据导师的图纸设计了包含6层的系统界面(这里只截取了部分界面),具体思路就是将信号展示环节和实验操作环节分开。

1.3编写界面入口程序添加功能函数

1.编写整个系统的入口程序,该程序连接着系统开始界面。

app=QtWidgets.QApplication(sys.argv)
widget=QtWidgets.QWidget()
ui=Ui_widge()
ui.setupUi(widget)
widget.show()
sys.exit(app.exec_())

2.将每个界面的ui文件转换成py文件,并且通过编写函数为控件添加功能,包括获取文本框的输入文本(文本框输入的是字符串,先用eval函数将其转换为列表或数字)、为按钮添加动作连接函数、获取滑块的值显示到文本框中、为实验添加说明框等等。下面为某个界面的功能函数和界面转换代码。

def zhishu(self):
    Form_16 = QtWidgets.QDialog()
    self.ui = Ui_Form16()
    self.ui.setupUi(Form_16)
    Form_16.show()
    Form_16.exec_()
    self.Form10.show()
def close(self):
    self.Form10.close()

def retranslateUi(self, Form10):
    _translate = QtCore.QCoreApplication.translate
    Form10.setWindowTitle(_translate("Form10", "辅助实验教学子系统 - 信号 - 基本信号"))
    Form10.setWindowIcon(QtGui.QIcon('1.jpg'))
    self.pushButton_1.setText(_translate("Form10", "指数信号"))
    self.pushButton_1.clicked.connect(self.zhishu)
    self.pushButton_2.setText(_translate("Form10", "返回上一级"))
    self.pushButton_2.clicked.connect(self.close)

1.4将matplotlib绘制的图片(信号波形和实验波形)插入到GUI界面

1.学习了用matplotlib绘图的基本方法,编写代码绘制实现了连续信号(阶跃、方波、正弦波、三角波、锯齿波),离散信号(单位序列、正弦序列、指数序列),信号和序列的相加相乘运算,卷积运算,方波合成与分解运算,不同间隔不同频率采样后的信号,不同滤波效果得到的信号等等。

2.实现信号后绘制得到了相应图片,通过使用label控件的setPixmap函数将matplotlib绘制的图片插入到Qt界面中。

1.5实现多层界面转换(上一个界面仍然保留),添加返回上一级按钮

1.在每个界面的py文件中先导入需要跳转的界面模块,用QDialog函数来连接需要跳转到的下一个界面,用show函数和exec函数实现界面显示运行。

2.编写关闭函数,点击返回上一级按钮时将该界面关闭。

1.6用PyInstaller将所有py文件打包成exe可执行文件

1.在命令行中输入pyi-makespec 000_plot.py生成spec文件修改文本内容添加所有用到的py文件和图片数据并保存文件,在spec文件路径下打开命令行,输入pyinstaller -D 000_plot.spec生成exe程序。

2.生成的exe程序在dist文件夹中,dist文件夹里包含了整个项目所需的代码和环境,可在其他电脑中进行使用。(这里必须在Anaconda中打包而且打包后的文件非常大,用其它打包会出错)

3.最终打包成功了,文件夹比较大,点击exe文件每次都能成功打开系统。

2 设计心得

此次设计是在学习Python语言之后尝试完成的一项具体性设计任务,我也深刻体会到了Python在GUI设计方面功能的强大。完成任何一项设计都是不易的,从前期基础知识的学习,到自己动手后的不知所措,这个过程中我遇到了非常多的难题,针对难题也查阅了无数的经验帖和资料,功夫不负有心人,难题被一个接一个的解决了,不过因为我看到论文不够多经验不够目前还是有些难题存在困难或者解决的效果不够好。

此次任务,我发自内心地感受到了解决难题带给人的快乐,以后的学习中还是会遇到很多难题的,我会把这看成一件幸运的事情,遇到难题说明我正在提升的轨道上,只有攻克一道道难关才能看到最后的彩虹,加油向前冲!


文章作者: BoBoRing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BoBoRing !
评论
  目录