摆脱
self.myLabel.setScaledContents(True)
调用(或将其设置为False)。它用像素图填充您的小部件,而无需关心纵横比。
如
QPixmap发现的那样,如果需要调整a的大小,
scaled则是必需的方法。但是您调用的是错误的。让我们看一下定义:
QPixmap QPixmap.scaled (self, int width, int height, Qt.AspectRatioMode aspectRatioMode = Qt.IgnoreAspectRatio, Qt.TransformationMode transformMode = Qt.FastTransformation)
此函数的返回类型为
QPixmap,因此它返回原始像素图的缩放 副本 。
然后,您需要一个
width和一个来
height描述像素图的(最大)最终大小。
另外两个可选参数。
aspectRatioMode处理宽高比。该文档详细介绍了不同的选项及其效果。
transformMode定义缩放的方式(哪种算法)。它可能会改变图像的最终质量。您可能不需要这个。
因此,将其放在一起就应该拥有(
Qt名称空间在内部
QtCore):
# substitute the width and height to desired valuesself.myLabel.setPixmap(QtGui.QPixmap(_fromUtf8(directory + '\' + tempName)).scaled(width, height, QtCore.Qt.KeepAspectRatio))
或者,如果您有一个固定的size
QLabel,则可以调用该
.size()方法以从中获取大小:
self.myLabel.setPixmap(QtGui.QPixmap(_fromUtf8(directory + '\' + tempName)).scaled(self.myLabel.size(), QtCore.Qt.KeepAspectRatio))
注意 :您可能需要使用
os.path.join(directory, tempName)该
directory + '\' +tempName零件。



