一、系统环境
1、打开cmd命令框
2、查看系统下Python的版本,使用如下指令pyhton -V
二、安装软件
1、安装PyQt5软件,使用如下指令进行安装pip install PyQt5
安装过程中出现错误,使用命令进行更新,命令为 python -m pip install –upgrade pip更新pip服务。
更新成功会提示更新成功,如上图所示
2、安装qscintilla用不支持eric工具用于开始PyQt5应用程序使用的支持软件,安装命令为pip install qscintilla,安装成功后如下图所示:
3、安装eric6编辑PyQt5工具,首先下载好eric6编辑器工具,下载后进行解压,解压后进入到文件目录中,使用如下指令进行工具的安装python install.py
安装过程中会进行其它插件的安装,按照提示选择Y即可。安装完成后会提示插入成功的提示,如下图所示
4、安装Qt5-tool工具,用于编辑PyQt5的界面资源工具,安装指令为pip install PyQt5-tools
安装完成后会提示安装成功。
5、安装支持matlab绘图插件matplotlib,安装指令为 python -m pip install matplotlib,安装如下图所示
安装成功后提示成功安装和所依赖的其它软件包。
三、创建PyQt5工程
- 打开eric6编辑器,打开后如下图所示:
2、创建一个工程,输入工程名称,点击OK按钮。
生成一个默认工程,里面有__init__.py的空py文件。
选择图标,添加一个Qt的对话框,如下图所示:
双击工程的.ui文件弹出Qt编辑器工具,如下图所示:
界面上添加相应的控件,如上图所示。
添加完成后,选中文件右键点击弹出右键菜单,选择Generate Dialog Code… 选项生成
弹出代码生成框,如下图所示:
添加完成后,点击Ok按钮,会生成相应的代码,生成文件如下图所示:
此时工程创建完成,点击编译即可看到界面效果。
3、将matplotlib库嵌入到PyQt5对话框中进行显示
对上面的工程进行代码添加,在文件testplot2pyqt5.py代码如下:
#-*-coding:utf-8-*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QDialog
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QGridLayout
import sys
import numpy as np
from Ui_testplot2pyqt5 import Ui_Dialog
import matplotlib
matplotlib.use("Qt5Agg") # 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
#创建一个matplotlib图形绘制类
class MyFigure(FigureCanvas):
def __init__(self,width=5, height=4, dpi=100):
#第一步:创建一个创建Figure
self.fig = Figure(figsize=(width, height), dpi=dpi)
#第二步:在父类中激活Figure窗口
super(MyFigure,self).__init__(self.fig) #此句必不可少,否则不能显示图形
#第三步:创建一个子图,用于绘制图形用,111表示子图编号,如matlab的subplot(1,1,1)
self.axes = self.fig.add_subplot(111)
#第四步:就是画图,【可以在此类中画,也可以在其它类中画】
def plotsin(self):
self.axes0 = self.fig.add_subplot(111)
t = np.arange(0.0, 3.0, 0.01)
s = np.sin(2 * np.pi * t)
self.axes0.plot(t, s)
def plotcos(self):
t = np.arange(0.0, 3.0, 0.01)
s = np.sin(2 * np.pi * t)
self.axes.plot(t, s)
class MainDialogImgBW(QDialog,Ui_Dialog):
def __init__(self):
super(MainDialogImgBW,self).__init__()
self.setupUi(self)
self.setWindowTitle("显示matplotlib绘制图形")
self.setMinimumSize(0,0)
#第五步:定义MyFigure类的一个实例
self.F = MyFigure(width=3, height=2, dpi=100)
#self.F.plotsin()
self.plotcos()
#第六步:在GUI的groupBox中创建一个布局,用于添加MyFigure类的实例(即图形)后其他部件。
self.gridlayout = QGridLayout(self.groupBox) # 继承容器groupBox
self.gridlayout.addWidget(self.F,0,1)
#补充:另创建一个实例绘图并显示
self.plotother()
def plotcos(self):
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2 * np.pi * t)
self.F.axes.plot(t, s)
self.F.fig.suptitle("cos")
def plotother(self):
F1 = MyFigure(width=5, height=4, dpi=100)
F1.fig.suptitle("Figuer_4")
F1.axes1 = F1.fig.add_subplot(221)
x = np.arange(0, 50)
y = np.random.rand(50)
F1.axes1.hist(y, bins=50)
F1.axes1.plot(x, y)
F1.axes1.bar(x, y)
F1.axes1.set_title("hist")
F1.axes2 = F1.fig.add_subplot(222)
## 调用figure下面的add_subplot方法,类似于matplotlib.pyplot下面的subplot方法
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [23, 21, 32, 13, 3, 132, 13, 3, 1]
F1.axes2.plot(x, y)
F1.axes2.set_title("line")
# 散点图
F1.axes3 = F1.fig.add_subplot(223)
F1.axes3.scatter(np.random.rand(20), np.random.rand(20))
F1.axes3.set_title("scatter")
# 折线图
F1.axes4 = F1.fig.add_subplot(224)
x = np.arange(0, 5, 0.1)
F1.axes4.plot(x, np.sin(x), x, np.cos(x))
F1.axes4.set_title("sincos")
self.gridlayout.addWidget(F1, 0, 2)
if __name__ == "__main__":
app = QApplication(sys.argv)
main = MainDialogImgBW()
main.show()
#app.installEventFilter(main)
sys.exit(app.exec_())
添加完成后,点击编辑器运行脚本,如下图:
点击后弹出对话框,需要选中当前项目的文件夹,点击OK,如下图所示:
运行效果如下图所示:
四、安装pyinstaller打包工具
1、使用pip install pyinstaller 安装打包工具,安装如下图所示
安装成功后,提示软件插入成功。
五、应用程序打包
对开发完成的应用程序,打包成单独的exe程序,首先进入到工程目录下
使用如下指令进行打包 pyinstaller -F -w testplot2pyqt5.py,打包过程如下图所示:
打包完成后,会提示成功创建,如下图所示:
查看生成的文件目录如下:
此时会生成几个文件目录,打开dist文件目录,应用程序生成如下图所示:
双击应用程序目录,执行效果图如下图所示: