Python PyQt:将缩放图像放置在标签中心
我使用Python PyQt:将缩放图像放置在标签中心,python,image,position,pyqt,qlabel,Python,Image,Position,Pyqt,Qlabel,我使用QPixmap在标签上显示不同大小的图像。我已使用以下代码显示图像: 以上代码工作正常,没有任何问题。但是,图像显示在标签的左侧而不是中心。此外,缩放会进一步缩小图像,而不是填充整个标签 是否可以在标签中心显示图像?如果您只想让图像填充整个标签,无论其大小: self.ui.label.setScaledContents(True) self.ui.label.setPixmap(myPixmap) 但是,这不会保持图像的纵横比。为此,您需要在每次标签更改大小时重新缩放p
QPixmap
在标签上显示不同大小的图像。我已使用以下代码显示图像:
以上代码工作正常,没有任何问题。但是,图像显示在标签的左侧而不是中心。此外,缩放会进一步缩小图像,而不是填充整个标签
是否可以在标签中心显示图像?如果您只想让图像填充整个标签,无论其大小:
self.ui.label.setScaledContents(True)
self.ui.label.setPixmap(myPixmap)
但是,这不会保持图像的纵横比。为此,您需要在每次标签更改大小时重新缩放pixmap:
self.pixmap = QtGui.QPixmap(os.path.join("data", "images", image_name))
self.ui.label.setPixmap(self.pixmap)
# this ensures the label can also re-size downwards
self.ui.label.setMinimumSize(1, 1)
# get resize events for the label
self.ui.label.installEventFilter(self)
...
def eventFilter(self, source, event):
if (source is self.ui.label and event.type() == QtCore.QEvent.Resize):
# re-scale the pixmap when the label resizes
self.ui.label.setPixmap(self.pixmap.scaled(
self.ui.label.size(), QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation))
return super(MainWindow, self).eventFilter(source, event)
(注意:您可能需要更改最后一行中的main窗口
)
PS:
为确保图像始终居中,您还需要:
self.ui.label.setAlignment(QtCore.Qt.AlignCenter)
我认为您的图像下采样问题是由于使用了
label.size()
请尝试改用
mainWindow.size()
这是否会显示以标签为中心的pixmap?@Trilarion。可能,但这取决于图像和父窗口的尺寸。我已经添加了一个细化,它将保证它始终以中心为中心。
self.ui.label.setAlignment(QtCore.Qt.AlignCenter)