I'm trying to embed a matplotlib plot in pyqt5 widget, i tried some of the methodes but i can't get it done. i'm new to pyqt5 and i don't understand how to embed mapltplotlib plot in a Qtwidget.
Here is my qt designer generated python file,
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '.\ui\main_window_new.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1221, 583)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.top = QtWidgets.QFrame(self.centralwidget)
self.top.setStyleSheet("")
self.top.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.top.setFrameShadow(QtWidgets.QFrame.Raised)
self.top.setObjectName("top")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.top)
self.horizontalLayout.setObjectName("horizontalLayout")
self.frame_3 = QtWidgets.QFrame(self.top)
self.frame_3.setStyleSheet("")
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame_3)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setSpacing(0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.frame = QtWidgets.QFrame(self.frame_3)
self.frame.setStyleSheet("margin-bottom:10px;")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.frame)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setSpacing(0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label = QtWidgets.QLabel(self.frame)
self.label.setMinimumSize(QtCore.QSize(50, 0))
self.label.setMaximumSize(QtCore.QSize(50, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.horizontalLayout_2.addWidget(self.label)
self.spinBox = QtWidgets.QSpinBox(self.frame)
self.spinBox.setMinimumSize(QtCore.QSize(50, 30))
self.spinBox.setMaximumSize(QtCore.QSize(50, 30))
self.spinBox.setMinimum(1)
self.spinBox.setMaximum(31)
self.spinBox.setObjectName("spinBox")
self.horizontalLayout_2.addWidget(self.spinBox)
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setMinimumSize(QtCore.QSize(50, 0))
self.label_2.setMaximumSize(QtCore.QSize(50, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.spinBox_2 = QtWidgets.QSpinBox(self.frame)
self.spinBox_2.setMinimumSize(QtCore.QSize(50, 30))
self.spinBox_2.setMaximumSize(QtCore.QSize(50, 30))
self.spinBox_2.setMinimum(1)
self.spinBox_2.setMaximum(12)
self.spinBox_2.setObjectName("spinBox_2")
self.horizontalLayout_2.addWidget(self.spinBox_2)
self.verticalLayout_2.addWidget(self.frame, 0, QtCore.Qt.AlignBottom)
self.frame_5 = QtWidgets.QFrame(self.frame_3)
self.frame_5.setStyleSheet("")
self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_5.setObjectName("frame_5")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.frame_5)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setSpacing(0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_3 = QtWidgets.QLabel(self.frame_5)
self.label_3.setMinimumSize(QtCore.QSize(100, 0))
self.label_3.setMaximumSize(QtCore.QSize(100, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.comboBox = QtWidgets.QComboBox(self.frame_5)
self.comboBox.setMinimumSize(QtCore.QSize(120, 30))
self.comboBox.setMaximumSize(QtCore.QSize(120, 30))
self.comboBox.setStyleSheet("")
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.horizontalLayout_3.addWidget(self.comboBox)
self.label_4 = QtWidgets.QLabel(self.frame_5)
self.label_4.setMinimumSize(QtCore.QSize(100, 0))
self.label_4.setMaximumSize(QtCore.QSize(100, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setStyleSheet("margin-left:5px;")
self.label_4.setObjectName("label_4")
self.horizontalLayout_3.addWidget(self.label_4)
self.comboBox_2 = QtWidgets.QComboBox(self.frame_5)
self.comboBox_2.setMinimumSize(QtCore.QSize(60, 30))
self.comboBox_2.setMaximumSize(QtCore.QSize(60, 30))
self.comboBox_2.setObjectName("comboBox_2")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.horizontalLayout_3.addWidget(self.comboBox_2)
self.verticalLayout_2.addWidget(self.frame_5, 0, QtCore.Qt.AlignTop)
self.horizontalLayout.addWidget(self.frame_3, 0, QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
self.frame_4 = QtWidgets.QFrame(self.top)
self.frame_4.setStyleSheet("padding:0 15px;")
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.frame_4)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setSpacing(0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.frame_6 = QtWidgets.QFrame(self.frame_4)
self.frame_6.setStyleSheet("margin-bottom:10px;")
self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_6.setObjectName("frame_6")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.frame_6)
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_4.setSpacing(0)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_5 = QtWidgets.QLabel(self.frame_6)
self.label_5.setMinimumSize(QtCore.QSize(100, 0))
self.label_5.setMaximumSize(QtCore.QSize(100, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.horizontalLayout_4.addWidget(self.label_5)
self.lineEdit_2 = QtWidgets.QLineEdit(self.frame_6)
self.lineEdit_2.setMinimumSize(QtCore.QSize(100, 30))
self.lineEdit_2.setMaximumSize(QtCore.QSize(100, 30))
self.lineEdit_2.setObjectName("lineEdit_2")
self.horizontalLayout_4.addWidget(self.lineEdit_2)
self.label_6 = QtWidgets.QLabel(self.frame_6)
self.label_6.setMinimumSize(QtCore.QSize(100, 0))
self.label_6.setMaximumSize(QtCore.QSize(100, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.horizontalLayout_4.addWidget(self.label_6)
self.lineEdit = QtWidgets.QLineEdit(self.frame_6)
self.lineEdit.setMinimumSize(QtCore.QSize(100, 30))
self.lineEdit.setMaximumSize(QtCore.QSize(100, 30))
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout_4.addWidget(self.lineEdit)
self.verticalLayout_3.addWidget(self.frame_6, 0, QtCore.Qt.AlignRight|QtCore.Qt.AlignBottom)
self.frame_7 = QtWidgets.QFrame(self.frame_4)
font = QtGui.QFont()
font.setPointSize(9)
self.frame_7.setFont(font)
self.frame_7.setStyleSheet("")
self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_7.setObjectName("frame_7")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.frame_7)
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_5.setSpacing(0)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_7 = QtWidgets.QLabel(self.frame_7)
self.label_7.setMinimumSize(QtCore.QSize(70, 0))
self.label_7.setMaximumSize(QtCore.QSize(70, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_7.setFont(font)
self.label_7.setStyleSheet("")
self.label_7.setObjectName("label_7")
self.horizontalLayout_5.addWidget(self.label_7)
self.spinBox_4 = QtWidgets.QSpinBox(self.frame_7)
self.spinBox_4.setMinimumSize(QtCore.QSize(60, 30))
self.spinBox_4.setMaximumSize(QtCore.QSize(60, 30))
self.spinBox_4.setStyleSheet("padding:0;")
self.spinBox_4.setMinimum(1)
self.spinBox_4.setMaximum(12)
self.spinBox_4.setObjectName("spinBox_4")
self.horizontalLayout_5.addWidget(self.spinBox_4)
self.label_8 = QtWidgets.QLabel(self.frame_7)
self.label_8.setMinimumSize(QtCore.QSize(100, 0))
self.label_8.setMaximumSize(QtCore.QSize(100, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_8.setFont(font)
self.label_8.setObjectName("label_8")
self.horizontalLayout_5.addWidget(self.label_8)
self.spinBox_3 = QtWidgets.QSpinBox(self.frame_7)
self.spinBox_3.setMinimumSize(QtCore.QSize(80, 30))
self.spinBox_3.setMaximumSize(QtCore.QSize(80, 30))
self.spinBox_3.setStyleSheet("padding:0;")
self.spinBox_3.setMinimum(1)
self.spinBox_3.setMaximum(12)
self.spinBox_3.setObjectName("spinBox_3")
self.horizontalLayout_5.addWidget(self.spinBox_3)
self.label_9 = QtWidgets.QLabel(self.frame_7)
self.label_9.setMinimumSize(QtCore.QSize(120, 0))
self.label_9.setMaximumSize(QtCore.QSize(120, 16777215))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_9.setFont(font)
self.label_9.setObjectName("label_9")
self.horizontalLayout_5.addWidget(self.label_9)
self.comboBox_3 = QtWidgets.QComboBox(self.frame_7)
self.comboBox_3.setMinimumSize(QtCore.QSize(120, 30))
self.comboBox_3.setMaximumSize(QtCore.QSize(120, 16777215))
self.comboBox_3.setStyleSheet("padding:0;")
self.comboBox_3.setObjectName("comboBox_3")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.horizontalLayout_5.addWidget(self.comboBox_3)
self.verticalLayout_3.addWidget(self.frame_7, 0, QtCore.Qt.AlignRight|QtCore.Qt.AlignTop)
self.horizontalLayout.addWidget(self.frame_4, 0, QtCore.Qt.AlignTop)
self.verticalLayout.addWidget(self.top)
self.frame_2 = QtWidgets.QFrame(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
self.frame_2.setSizePolicy(sizePolicy)
self.frame_2.setStyleSheet("background-color: rgb(83, 83, 83);")
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.frame_2)
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.contour = QtWidgets.QFrame(self.frame_2)
self.contour.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.contour.setFrameShadow(QtWidgets.QFrame.Raised)
self.contour.setObjectName("contour")
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.contour)
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.widget_2 = QtWidgets.QWidget(self.contour)
self.widget_2.setMinimumSize(QtCore.QSize(420, 320))
self.widget_2.setMaximumSize(QtCore.QSize(420, 320))
self.widget_2.setStyleSheet("background-color: rgb(85, 255, 0);")
self.widget_2.setObjectName("widget_2")
self.horizontalLayout_8.addWidget(self.widget_2)
self.horizontalLayout_6.addWidget(self.contour)
self.xy = QtWidgets.QFrame(self.frame_2)
self.xy.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.xy.setFrameShadow(QtWidgets.QFrame.Raised)
self.xy.setObjectName("xy")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.xy)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.widget = QtWidgets.QWidget(self.xy)
self.widget.setMinimumSize(QtCore.QSize(420, 320))
self.widget.setMaximumSize(QtCore.QSize(420, 320))
self.widget.setStyleSheet("background-color: rgb(0, 170, 255);")
self.widget.setObjectName("widget")
self.horizontalLayout_7.addWidget(self.widget)
self.horizontalLayout_6.addWidget(self.xy)
self.verticalLayout.addWidget(self.frame_2)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1221, 21))
self.menubar.setObjectName("menubar")
self.menuInitialize = QtWidgets.QMenu(self.menubar)
self.menuInitialize.setObjectName("menuInitialize")
self.menuSettings = QtWidgets.QMenu(self.menubar)
self.menuSettings.setObjectName("menuSettings")
self.menuUpdate = QtWidgets.QMenu(self.menubar)
self.menuUpdate.setObjectName("menuUpdate")
self.menuHelp = QtWidgets.QMenu(self.menubar)
self.menuHelp.setObjectName("menuHelp")
self.menuAbout = QtWidgets.QMenu(self.menubar)
self.menuAbout.setObjectName("menuAbout")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.toolBar = QtWidgets.QToolBar(MainWindow)
self.toolBar.setObjectName("toolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.actionSave = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/icons/icons/285657_floppy_guardar_save_icon.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionSave.setIcon(icon)
self.actionSave.setObjectName("actionSave")
self.actionnew = QtWidgets.QAction(MainWindow)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/icons/icons/1904677_add_addition_calculate_charge_create_icon.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionnew.setIcon(icon1)
self.actionnew.setObjectName("actionnew")
self.actionreset = QtWidgets.QAction(MainWindow)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/icons/icons/8111405_reset_reload_refresh_sync_arrow_icon.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionreset.setIcon(icon2)
self.actionreset.setObjectName("actionreset")
self.actionupdate = QtWidgets.QAction(MainWindow)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/icons/icons/3298600_new_blank_document_folder_icon.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionupdate.setIcon(icon3)
self.actionupdate.setObjectName("actionupdate")
self.menubar.addAction(self.menuInitialize.menuAction())
self.menubar.addAction(self.menuSettings.menuAction())
self.menubar.addAction(self.menuUpdate.menuAction())
self.menubar.addAction(self.menuHelp.menuAction())
self.menubar.addAction(self.menuAbout.menuAction())
self.toolBar.addAction(self.actionnew)
self.toolBar.addAction(self.actionSave)
self.toolBar.addAction(self.actionreset)
self.toolBar.addAction(self.actionupdate)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Day"))
self.label_2.setText(_translate("MainWindow", "Month"))
self.label_3.setText(_translate("MainWindow", "Parameters"))
self.comboBox.setItemText(0, _translate("MainWindow", "Temperature"))
self.comboBox.setItemText(1, _translate("MainWindow", "rh"))
self.comboBox.setItemText(2, _translate("MainWindow", "uwind"))
self.comboBox.setItemText(3, _translate("MainWindow", "vwind"))
self.label_4.setText(_translate("MainWindow", "Pressure"))
self.comboBox_2.setItemText(0, _translate("MainWindow", "20"))
self.comboBox_2.setItemText(1, _translate("MainWindow", "40"))
self.comboBox_2.setItemText(2, _translate("MainWindow", "60"))
self.comboBox_2.setItemText(3, _translate("MainWindow", "80"))
self.label_5.setText(_translate("MainWindow", "Latitude"))
self.label_6.setText(_translate("MainWindow", "Longitude"))
self.label_7.setText(_translate("MainWindow", "Day"))
self.label_8.setText(_translate("MainWindow", "Month"))
self.label_9.setText(_translate("MainWindow", "Parameters"))
self.comboBox_3.setItemText(0, _translate("MainWindow", "Temperature"))
self.comboBox_3.setItemText(1, _translate("MainWindow", "rh"))
self.comboBox_3.setItemText(2, _translate("MainWindow", "uwind"))
self.comboBox_3.setItemText(3, _translate("MainWindow", "vwind"))
self.menuInitialize.setTitle(_translate("MainWindow", "Initialize"))
self.menuSettings.setTitle(_translate("MainWindow", "Settings"))
self.menuUpdate.setTitle(_translate("MainWindow", "Update"))
self.menuHelp.setTitle(_translate("MainWindow", "Help"))
self.menuAbout.setTitle(_translate("MainWindow", "About"))
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
self.actionSave.setText(_translate("MainWindow", "Save"))
self.actionSave.setToolTip(_translate("MainWindow", "Save"))
self.actionnew.setText(_translate("MainWindow", "new"))
self.actionnew.setToolTip(_translate("MainWindow", "New"))
self.actionreset.setText(_translate("MainWindow", "reset"))
self.actionreset.setToolTip(_translate("MainWindow", "Reset"))
self.actionupdate.setText(_translate("MainWindow", "update"))
self.actionupdate.setToolTip(_translate("MainWindow", "Update"))
import resource_rc
here is my main file
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from main_ui import *
class MainWIndow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWIndow()
window.show()
sys.exit(app.exec_())
Here is my code for ploting graph
import matplotlib.pyplot as plt
def show():
x = [1, 2, 3]
y = [2, 4, 1]
plt.plot(x, y)
plt.xlabel('x - axis')
plt.ylabel('y - axis')
plt.title('test')
plt.show()
show()
this is how my ui looks like
and i want to plot the matplotlib plot in blue window
How to emebed the plot correctly in the QtWidget? it will be really helpful if some one explain how to do it