Как изменить размер окна по размеру выбранного изображения
Я пытаюсь сделать мини фото редактор.
Как мне сделать так, чтобы при вставке изображения в 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()
Регулирует размер виджета, чтобы он соответствовал его содержимому.
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())
