PyQt5使用matplotlib在QLabel上设置图片

该博客介绍了如何使用PyQt5设计前端界面,并结合Matplotlib库处理后端业务逻辑,实现用户输入数字列表后自动生成图形的功能。用户在界面上输入xlist和ylist,点击按钮后,程序将解析输入,调用plot.py绘制图形,并显示在Qt界面的标签中。博客涵盖了GUI设计、事件处理、图像操作以及数据转换等技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两个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.运行结果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值