Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
PyQt + Matplotlib
#8
You can add an empty widget with fixed height

import sys
import matplotlib
matplotlib.use("Qt5Agg")
from PyQt5 import QtCore
from PyQt5.QtWidgets import (QApplication, QMainWindow, QSizePolicy, QLabel, 
                                QVBoxLayout, QHBoxLayout, QWidget, QPushButton)
from numpy import arange, sin, pi
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
 
 
class MyMplCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
 
        self.compute_initial_figure()
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)
 
        FigureCanvas.setSizePolicy(self,
                                   QSizePolicy.Expanding,
                                   QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)
 
    def compute_initial_figure(self):
        pass
 
class MyStaticMplCanvas(MyMplCanvas):
    def compute_initial_figure(self):
        t = arange(0.0, 3.0, 0.01)
        s = sin(2*pi*t)
        self.axes.plot(t, s)
 
 
class ApplicationWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        self.setWindowTitle("Window")
        sc = MyStaticMplCanvas(self, width=5, height=4, dpi=100)
        
        vbox = QVBoxLayout()
        box_layout = QWidget()
        
        buttonbox = QHBoxLayout()
        btn = QPushButton("Button 1")
        btn.clicked.connect(self.btn_1_clicked)
        buttonbox.addWidget(btn)
        
        btn2 = QPushButton("Button 2")
        buttonbox.addWidget(btn2)
        
        btn3 = QPushButton("Button 3")
        buttonbox.addWidget(btn3)
        
        vbox.addLayout(buttonbox)
        box_layout.setLayout(vbox)
        
        label = QLabel("Some Text ...")
        vbox.addWidget(label)
        
        # 100px space
        space = QWidget()
        space.setFixedHeight(100)
        vbox.addWidget(space)
        
        vbox.addWidget(sc)
        self.setCentralWidget(box_layout)
        self.setGeometry(50, 50, 800, 600)
        
    def btn_1_clicked(self):
        print(f"Button 1 clicked")
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
 
    aw = ApplicationWindow()
    aw.setWindowTitle("PyQt5 Matplot Example")
    aw.show()
    app.exec()
Reply


Messages In This Thread
PyQt + Matplotlib - by frohr - Mar-30-2022, 12:59 PM
RE: PyQt + Matplotlib - by Axel_Erfurt - Mar-30-2022, 04:26 PM
RE: PyQt + Matplotlib - by Axel_Erfurt - Mar-30-2022, 05:44 PM
RE: PyQt + Matplotlib - by frohr - Mar-30-2022, 06:05 PM
RE: PyQt + Matplotlib - by deanhystad - Mar-30-2022, 06:09 PM
RE: PyQt + Matplotlib - by Axel_Erfurt - Mar-30-2022, 06:57 PM
RE: PyQt + Matplotlib - by frohr - Mar-30-2022, 08:47 PM
RE: PyQt + Matplotlib - by Axel_Erfurt - Mar-30-2022, 09:19 PM
RE: PyQt + Matplotlib - by Axel_Erfurt - Mar-31-2022, 01:10 PM
RE: PyQt + Matplotlib - by frohr - Apr-01-2022, 11:39 AM
RE: PyQt + Matplotlib - by Axel_Erfurt - Apr-01-2022, 12:09 PM
RE: PyQt + Matplotlib - by frohr - Apr-02-2022, 06:19 PM
RE: PyQt + Matplotlib - by Axel_Erfurt - Apr-02-2022, 06:31 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Matplotlib: How do I convert Dates from Excel to use in Matplotlib JaneTan 1 3,398 Mar-11-2021, 10:52 AM
Last Post: buran

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020