Как изменить размер окна по размеру выбранного изображения

Я пытаюсь сделать мини фото редактор.
Как мне сделать так, чтобы при вставке изображения в QLabel, размер QMainWindow изменился относительно размера изображения?

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QLabel
from PyQt5 import uic
from PyQt5.QtGui import QPixmap


class My(QMainWindow):
    def __init__(self):
        super(My, self).__init__()
        uic.loadUi('Project.ui', self)
        self.pushButton_open.clicked.connect(self.openfile)

    def openfile(self):
        fname = QFileDialog.getOpenFileName(self, 'Выберите картинку', '')[0]
        self.pixmap = QPixmap(fname)
        self.image.setPixmap(self.pixmap)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    my = My()
    my.show()
    sys.exit(app.exec())


Ответы (1 шт):

Автор решения: S. Nick

void QWidget::adjustSize()

Регулирует размер виджета, чтобы он соответствовал его содержимому.

Больше https://doc.qt.io/qt-5/qwidget.html#adjustSize

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, \
    QFileDialog, QLabel, QPushButton, QWidget, QVBoxLayout
#from PyQt5 import uic
from PyQt5.QtGui import QPixmap


class My(QMainWindow):
    def __init__(self):
        super(My, self).__init__()
#        uic.loadUi('Project.ui', self)

        self.centralwidget = QWidget()
        self.setCentralWidget(self.centralwidget)
        
        self.image = QLabel() 
        self.pushButton_open = QPushButton('Выбрать картинку')
        self.pushButton_open.setMaximumSize(120, 30)
        self.pushButton_open.clicked.connect(self.openfile)
        
        self.layout = QVBoxLayout(self.centralwidget)
        self.layout.addWidget(self.pushButton_open)
        self.layout.addWidget(self.image)

    def openfile(self):
        fname = QFileDialog.getOpenFileName(
            self, 
            'Выберите картинку', 
            '.',
            "PNG Files(*.png);;JPG Files(*.jpg);;GIF File(*.gif)"
            )[0]
        if not fname:
            return        
        self.pixmap = QPixmap(fname)
        self.image.setPixmap(self.pixmap)

        size = self.pixmap.size()
        pos = self.pos()
        self.setGeometry(pos.x()+10, pos.y()+30, size.width(), size.height())
        self.layout.activate()  
        self.adjustSize()
        

if __name__ == "__main__":
    app = QApplication(sys.argv)
    my = My()
    my.show()
    sys.exit(app.exec())

введите сюда описание изображения

→ Ссылка