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)