结合qtdesigner、pyqt以及matplotlib,点击button按钮在界面处显示绘图

首先感谢https://blog.csdn.net/panrenlong/article/details/80183519此文给我的帮助。

第一步:使用QTdesigner进行设计显示图表的控件,在Main Window中进行创建,我加了一个pushbutton,一个widget和一个groupbox,其中groupbox放在widget中,最后进行布局;

 第二步:将保存的ui文件转换为py文件

第三步:对转换的pyqtui.py文件稍做修改

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
        self.pushButton.setSizePolicy(sizePolicy)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setObjectName("widget")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.groupBox = QtWidgets.QGroupBox(self.widget)
        self.groupBox.setObjectName("groupBox")
        self.verticalLayout_4.addWidget(self.groupBox)
        self.verticalLayout.addWidget(self.widget)
        self.verticalLayout_3.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(MainWindow.plot)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Pyqt显示绘图"))
        self.pushButton.setText(_translate("MainWindow", "显示绘图"))
        self.groupBox.setTitle(_translate("MainWindow", "GroupBox"))

 第四步:在同一个文件夹下创建一个plt_pyqt.py文件,对文件进行编辑

import sys
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
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QGridLayout
from PyQt5.QtGui import QIcon
from PyQt5 import QtWidgets
from pyqtui import Ui_MainWindow

class MyFigure(FigureCanvas):
    def __init__(self,width, height, dpi):  
        self.fig = Figure(figsize=(width, height), dpi=dpi) # 创建一个Figure
        super(MyFigure,self).__init__(self.fig) # 在父类中激活Figure窗口
        self.axes = self.fig.add_subplot(111)# 调用Figure下面的add_subplot方法
        
class Window(QMainWindow,Ui_MainWindow):
    def __init__(self,parent=None):
        super(Window, self).__init__(parent)
        self.setupUi(self)
        self.test = MyFigure(width=3, height=2, dpi=100)
        self.gridlayout = QGridLayout(self.groupBox)  # 继承容器groupBox
        self.gridlayout.addWidget(self.test,0,1)
    def plot(self):
        x = [i for i in range(11)]
        y = x
        self.test.axes.plot(x, y)
        self.test.fig.suptitle("hello word") #设置总标题
        self.test.axes.set_xlabel('X_Label')  #设置x轴标题
        self.test.axes.set_ylabel('Y_Label')  #设置Y轴标题
        
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QIcon('D:/Python/2021/pyqt/test/b.ico'))
    MainWindow = QtWidgets.QMainWindow()
    ui = Window()
    ui.show()
    sys.exit(app.exec_())

第五步:运行plt_pyqt.py文件,可以发现,点击button按钮,可以在groupbox中显示绘制的图像了,散点图只需要将self.test.axes.plot(x, y)改为self.test.axes.scatter(x, y)即可。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值