Технологии
как можно в PyQt5 менять размер canvas вместе с окном window? - вопрос №5053170
январь 28, 2023 г.
-
Всего ответов: 1
-
Для того чтобы изменять размер 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 таким образом, чтобы он занимал всю доступную площадь в окне.
Похожие вопросы
Плата LNVNB161216 Ноутбук 81LW0056RK Какую максимум можно добавить оперативку в каких характеристиках? хочу добавить вот такую: Модуль памяти CRUCIAL Ballistix Sport LT BLS16G4S26BFSD DDR4 - 16Гб
сентябрь 21, 2019 г.