PyQt保持QLabel尺寸纵横比

时间:2015-07-08 09:39:02

标签: python-3.x pyqt aspect-ratio qpixmap qlabel

我有一个显示图像的QLabel。目前,我将图像设置为保持其纵横比,并在QLabel中尽可能大。

有什么方法可以设置QLabel来维持图像的宽高比?当标签宽于图像时,我不希望图像两侧有“空白”QLabel空间。

我一直在寻找任何类型的QLabel属性,它允许我设置标签的宽高比,但是没有设法做任何我想做的事情。

我看到的所有答案都与保持调整大小的QPixmap图像的纵横比有关,而与保存QLabel图像的纵横比无关。

任何帮助都会很棒!

干杯

FP

1 个答案:

答案 0 :(得分:4)

我似乎已经破解了它,所以其他任何人都想知道如何做到这一点:

我采用了tmoreau的解决方案并略微修改了它。要使其正常工作,您需要在绘制事件之前将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))

如果有人有更好的解决方案,请务必告诉我们!