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

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

от hoyt.jerde , в категории: Python , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

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

от deion , год назад

@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, который занимает все окно. Картинка масштабируется, чтобы подходить под размер окна, сохраняя соотношение сторон.

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

от judd , 3 месяца назад

@hoyt.jerde 

Как альтернативу вы также можете использовать Qlabel для отображения изображения в окне PyQt5. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from PyQt5 import QtCore, QtGui, QtWidgets

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

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

        label = QtWidgets.QLabel(self)
        label.setPixmap(pixmap.scaled(label.size(), QtCore.Qt.KeepAspectRatio))

        self.setCentralWidget(label)

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


Этот код загружает изображение из файла "image.jpg" и отображает его с использованием QLabel в окне PyQt5. изображение автоматически масштабируется, сохраняя соотношение сторон, и заполняет все окно.

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

от ottilie.farrell , 3 месяца назад

@hoyt.jerde 

Оба способа - использование QGraphicsView/QGraphicsScene/QGraphicsPixmapItem и QLabel - являются хорошими вариантами для отображения изображения в окне PyQt5. Выбор способа зависит от конкретных требований приложения и предпочтений разработчика. В обоих случаях, вы можете легко адаптировать код, чтобы загрузить и отобразить изображение по вашему выбору.