Как сделать картинку во все окно на pyqt5?

Пользователь

от hoyt.jerde , в категории: Python , 7 месяцев назад

Как сделать картинку во все окно на pyqt5?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от deion , 7 месяцев назад

@hoyt.jerde 

Для того чтобы сделать картинку заполняющей все окно на PyQt5, можно использовать QGraphicsView в сочетании с QGraphicsScene и QGraphicsPixmapItem.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        # Создаем QGraphicsView и устанавливаем его в качестве центрального виджета
        self.view = QtWidgets.QGraphicsView(self)
        self.setCentralWidget(self.view)

        # Создаем QGraphicsScene
        self.scene = QtWidgets.QGraphicsScene(self)
        self.view.setScene(self.scene)

        # Загружаем картинку
        pixmap = QtGui.QPixmap("image.jpg")  # замените "image.jpg" на путь к вашей картинке

        # Создаем QGraphicsPixmapItem и устанавливаем картинку
        pixmap_item = QtWidgets.QGraphicsPixmapItem(pixmap)

        # Масштабируем картинку под размер окна
        pixmap_item.setFlags(QtWidgets.QGraphicsItem.ItemSendsGeometryChanges)
        pixmap_item.setTransformationMode(QtCore.Qt.SmoothTransformation)
        pixmap_item.setScale(1.0)  # здесь можно задать необходимый масштаб

        # Добавляем pixmap_item в сцену
        self.scene.addItem(pixmap_item)

        # При изменении размеров окна перемасштабируем картинку
        self.view.fitInView(pixmap_item, QtCore.Qt.KeepAspectRatio)

if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()


В примере загружается картинка "image.jpg" из текущей директории и отображается в QGraphicsView, который занимает все окно. Картинка масштабируется, чтобы подходить под размер окна, сохраняя соотношение сторон.