Технологии

как можно в PyQt5 менять размер canvas вместе с окном window? - вопрос №5053170

январь 28, 2023 г.

  • Всего ответов: 1

  • Денис - аватарка

    Денис

    36-й в Психологии

    Для того чтобы изменять размер canvas в PyQt5 вместе с окном window, можно использовать механизмы компоновки, например, QVBoxLayout и QHBoxLayout.

    Пример:

    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QHBoxLayout, QWidget

    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    from matplotlib.figure import Figure


    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('PyQt5 with Matplotlib')
            self.setGeometry(100, 100, 800, 600)

            # Создаем фигуру
            self.figure = Figure(figsize=(5, 4), dpi=100)

            # Создаем canvas и связываем его с фигурой
            self.canvas = FigureCanvas(self.figure)

            # Создаем виджеты для размещения canvas
            widget = QWidget(self)
            self.setCentralWidget(widget)

            v_box = QVBoxLayout()
            h_box = QHBoxLayout()
            h_box.addWidget(self.canvas)

            v_box.addLayout(h_box)

            # Добавляем виджет с компоновкой на центральный виджет окна
            widget.setLayout(v_box)

        def resizeEvent(self, event):
            super().resizeEvent(event)
            self.canvas.resize(self.width(), self.height())


    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())


    В этом примере мы создаем фигуру и canvas, а затем размещаем canvas на центральном виджете окна с помощью QVBoxLayout и QHBoxLayout. При изменении размера окна, мы переопределяем метод resizeEvent и изменяем размер canvas таким образом, чтобы он занимал всю доступную площадь в окне.

    апрель 9, 2023 г.

Похожие вопросы