如何将像素图拉伸到 window 的边缘?
How to stretch a pixmap to the edge of the window?
我有一个 PyQt window。 window 由 HBoxLayout 中的 VBoxLayout 组成,显示在下方。
这是 window 目前的样子:
但是,我希望图像拉伸到 window 的边缘,如下图所示:
我尝试将 window 的 padding
和 contentsmargin
设置为零,但这会弄乱 HBoxLayout 其余部分的间距。有什么方法可以拉伸此图像以填充 window 边缘,而不会弄乱我布局其余部分的间距。
最小可重现示例:
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, 0, 0)
.
如果这样做会使左侧小部件周围的 space 太小,请将所需的 space 设置为 self.VBL1.setContentsMargins(22, 22, 22, 22)
。
此外,如果您想保留图像和小部件之间的间距,请为 VBL1
的右边距指定一个不同的值。
我有一个 PyQt window。 window 由 HBoxLayout 中的 VBoxLayout 组成,显示在下方。
这是 window 目前的样子:
但是,我希望图像拉伸到 window 的边缘,如下图所示:
我尝试将 window 的 padding
和 contentsmargin
设置为零,但这会弄乱 HBoxLayout 其余部分的间距。有什么方法可以拉伸此图像以填充 window 边缘,而不会弄乱我布局其余部分的间距。
最小可重现示例:
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, 0, 0)
.
如果这样做会使左侧小部件周围的 space 太小,请将所需的 space 设置为 self.VBL1.setContentsMargins(22, 22, 22, 22)
。
此外,如果您想保留图像和小部件之间的间距,请为 VBL1
的右边距指定一个不同的值。