如何在 PyQt5 中水平对齐中心图像?

How do I align centre image horizontally in PyQt5?

我正在做我的大学项目,我想将图像水平居中对齐,我尝试了很多方法但没有找到解决方案。这是我的代码:

from PyQt5.QtGui import QPalette, QLinearGradient, QColor, QBrush, QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
import sys

from PyQt5 import QtGui


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.acceptDrops()
        self.setWindowTitle("Mask Detection")
        self.setWindowIcon(QtGui.QIcon('img.png'))
        self.setGeometry(0, 0, 400, 300)
        self.label = QLabel(self)
        self.label.setAlignment(Qt.AlignCenter)
        self.pixmap = QPixmap('PBL.png')
        self.label.setPixmap(self.pixmap)
        self.label.resize(self.pixmap.width(),
                          self.pixmap.height())
        self.show()

App = QApplication(sys.argv)
window = Window()

p = QPalette()
gradient = QLinearGradient(0, 0, 0, 400)
gradient.setColorAt(0.0, QColor(56, 93, 166))
gradient.setColorAt(1.0, QColor(10, 123, 146))
p.setBrush(QPalette.Window, QBrush(gradient))
window.setPalette(p)

sys.exit(App.exec())

对齐是相对于元素本身的几何形状而言的,并且由于 QLabel 的几何形状与 QPixmap 具有相同的大小,因此它不会产生差异。解决方案是使 QLabel 的几何形状与 window 相同,这可以通过在 centralWidget 中设置来完成:

self.setCentralWidget(self.label)