两个py文件,一个为前端界面,另一个为后端业务逻辑。
1.前端界面
Qt Designer设计的界面
.ui文件转化为.py文件
GUI_plot.py
from PyQt5 import QtCore, QtGui, QtWidgets
from plot import plot
from PIL import Image
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(489, 367)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(90, 50, 320, 240))
self.label.setText("")
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(170, 310, 113, 21))
self.lineEdit.setObjectName("lineEdit")
self.label_xlist = QtWidgets.QLabel(Dialog)
self.label_xlist.setGeometry(QtCore.QRect(120, 310, 72, 15))
self.label_xlist.setObjectName("label_xlist")
self.lineEdit_2 = QtWidgets.QLineEdit(Dialog)
self.lineEdit_2.setGeometry(QtCore.QRect(170, 340, 113, 21))
self.lineEdit_2.setText("")
self.lineEdit_2.setObjectName("lineEdit_2")
self.label_ylist = QtWidgets.QLabel(Dialog)
self.label_ylist.setGeometry(QtCore.QRect(120, 340, 72, 15))
self.label_ylist.setObjectName("label_ylist")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(320, 320, 93, 28))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label_xlist.setText(_translate("Dialog", "xlist:"))
self.label_ylist.setText(_translate("Dialog", "xlist:"))
self.pushButton.setText(_translate("Dialog", "生成"))
self.pushButton.clicked.connect(self.plot)
def plot(self):
xlist = self.lineEdit.text()
ylist = self.lineEdit_2.text()
print(xlist,ylist)
if self.check(xlist) and self.check(ylist):
plot(xlist,ylist)
img = Image.open('temp.png')
img1 = img.resize((320, 240))
img1.save('temp2.png')
self.label.setPixmap(QtGui.QPixmap('temp2.png'))
else:
self.label.setText("请输入数字列表")
def check(self,text):
if text:
if ',' not in text:
return False
else:
return True
else:
return False
import sys
#程序入口,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon("images/helicopter.png"))
MainWindow = QtWidgets.QMainWindow()#创建窗体对象
ui = Ui_Dialog()#创建PyQt设计的窗体对象
ui.setupUi(MainWindow)#调用PyQt窗体的方法对窗体对象进行初始化设置
MainWindow.show()
sys.exit(app.exec_())
2.后端业务逻辑
plot.py
import matplotlib.pyplot as plt
import io
def plot(xlist,ylist):
xlist = '0,1,2,3'
ylist = '0,1,2,3'
xlist = [float(i) for i in xlist.split(',')]
ylist = [float(i) for i in ylist.split(',')]
plt.plot(xlist,ylist)
# plt.show()
buffer = io.BytesIO()
plt.savefig('temp.png')
plt.close()
if __name__ == '__main__':
xlist = '0,1,2,3'
ylist = '0,1,2,3'
plot(xlist,ylist)
3.运行结果