PyQt Keeping QLabel Соотношение размеров и размеров

У меня есть QLabel, который отображает изображение. В настоящее время у меня есть изображение, настроенное для сохранения его пропорций, и увеличения его размера в QLabel.

Можно ли как-нибудь настроить QLabel для сохранения соотношения сторон изображения? Я не хочу иметь "пустое" пространство QLabel по обе стороны от изображения, когда метка шире, чем изображение.

Я искал какое-либо свойство QLabel, которое позволило бы мне установить соотношение сторон метки, но мне не удалось заставить что-либо делать то, что я хотел сделать.

Все ответы, которые я видел, относятся к сохранению соотношения сторон изображения QPixmap с измененным размером, но не к QLabel, содержащему его.

Любая помощь будет отличной!

ура

FP

1 ответ

Решение

Я, кажется, взломал это, так что если кто-то еще задавался вопросом, как это сделать:

Я взял решение Тморо и слегка его изменил. Чтобы это работало, вам нужно установить максимальный размер QLabel на новый размер изображения до события рисования. Сразу после этого вам нужно установить максимальный размер для QLabel на очень большой размер, иначе вы вообще не сможете увеличить изображение, так как вы указали максимальный размер, равный размеру текущего изображения.

def paintEvent(self, event):
        size = self.size()
        painter = QtGui.QPainter(self)
        point = QtCore.QPoint(0,0)
        scaledPix = self.pixmap.scaled(size, Qt.KeepAspectRatio, transformMode = Qt.SmoothTransformation)
        self.setMaximumSize(scaledPix.size())
        point.setX(0)
        point.setY(0)
        #print (point.x(), ' ', point.y())
        painter.drawPixmap(point, scaledPix)
        self.setMaximumSize(QtCore.QSize(4000,5000))

Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать!

Другие вопросы по тегам