PyQt 保持 QLabel 大小纵横比

PyQt Keeping QLabel Size Aspect Ratio

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

有没有什么方法可以设置 QLabel 来保持图像的纵横比?当标签比图像宽时,我不想在图像的任何一侧都有 "blank" QLabel space。

我一直在寻找任何类型的 QLabel 属性 允许我设置标签的纵横比,但没有设法实现我想做的任何事情。

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

任何帮助都会很棒!

干杯

FP

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

我借鉴了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))

如果谁有更好的解决办法,请务必告诉我!