如何将像素图拉伸到窗口的边缘?

问题描述

我有一个PyQt窗口。该窗口由HBoxLayout中的VBoxLayout组成,并显示在下面。

这是当前窗口的外观:

enter image description here

但是,我希望图像可以像下面的编辑图像一样延伸到窗口的边缘:

enter image description here

我尝试将窗口的paddingcontentsmargin设置为零,但这会弄乱HBoxLayout其余部分的间距。有什么方法可以拉伸此图像以填充窗口边缘而不会弄乱其余布局的空间。

最小的可复制示例:

class MainWindow(QMainWindow):
def __init__(self):
    super(MainWindow,self).__init__()

    self.CentralWidget = QWidget()
    self.setCentralWidget(self.CentralWidget)
    self.VBL1 = QVBoxLayout()

    logoLabel = QLabel()
    logopixmap = Qpixmap("Resources/logo.png").scaledToHeight(30)
    logoLabel.setpixmap(logopixmap)
    logoLabel.setAlignment(Qt.AlignCenter)
    self.VBL1.addWidget(logoLabel)

    self.WelcomeLabel = QLabel("Welcome Back!")
    self.VBL1.addWidget(self.WelcomeLabel)

    UsernameLabel = QLabel("Username")
    self.VBL1.addWidget(UsernameLabel)

    self.UsernameTB = QLineEdit()
    self.VBL1.addWidget(self.UsernameTB)

    PasswordLabel = QLabel("Password")
    self.VBL1.addWidget(PasswordLabel)

    self.PasswordTB = QLineEdit()
    self.VBL1.addWidget(self.PasswordTB)

    self.SignInBTN = QPushButton("Sign In")
    self.VBL1.addWidget(self.SignInBTN)

    self.CreateAccountBTN = QPushButton("Create An Account")
    self.VBL1.addWidget(self.CreateAccountBTN)

    # Art Label stores the image I want to stretch to the edges
    ArtLabel = QLabel()
    Artpixmap = Qpixmap("Stylesheet/LoginArt.jpg").scaledToHeight(250)
    ArtLabel.setpixmap(Artpixmap)

    self.HBL1 = QHBoxLayout()
    self.HBL1.addLayout(self.VBL1)
    self.HBL1.addWidget(ArtLabel)
    self.CentralWidget.setLayout(self.HBL1)

解决方法

使用self.HBL1.setContentsMargins(0,0)

如果这样做使左侧小部件周围的空间太小,请使用self.VBL1.setContentsMargins(22,22,22)设置所需的空间。

此外,如果要保留图像和小部件之间的间距,请为VBL1的右边距指定其他值。