无法在左侧添加小部件:PyQt5

问题描述 投票:0回答:1

我在这里有两个按钮,我希望将它们添加到左侧标签上的左上角。但是它总是在右侧添加按钮。这就是我所做的:

import sys
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtGui import QCursor
from PySide2.QtWidgets import QFrame
from PySide2.QtCore import QRect

class MyWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(250, 80, 800, 600)
        self.setWindowTitle("test app")
        self.setStyleSheet("background-color: #ffffff; border")

        label = QtWidgets.QLabel(self)
        label.setFixedWidth(240)
        label.setStyleSheet("background-color: rgba(246, 246, 246, 255);")

        profile = QtWidgets.QLabel('Scrappr.io',self)
        profile.move(10, 10)

        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)

        right_container = QtWidgets.QWidget()

# ++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

        glay = QtWidgets.QGridLayout(right_container)

        glay.setColumnStretch(1, 1)                                     # setColumnStretch
        glay.setRowStretch(1, 1)                                        # setRowStretch
        glay.setRowStretch(2, 2)                                        # setRowStretch
        glay.setRowStretch(3, 1)                                        # setRowStretch

# ++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        b1 = QtWidgets.QPushButton("Button1")
        b2 = QtWidgets.QPushButton("Button2")

        vbox = QtWidgets.QVBoxLayout()
        vbox.addWidget(b1)
        vbox.addStretch()
        vbox.addWidget(b2)

        hlay = QtWidgets.QHBoxLayout(central_widget)
        hlay.setContentsMargins(0, 0, 0, 0)
        hlay.addWidget(label)
        hlay.addWidget(right_container)
        hlay.addLayout(vbox)


def main():
    app = QtWidgets.QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()  

它给出输出,将两个按钮相加出现在右侧。我知道,这都是因为水平布局。

我想要实现的是右侧的那些按钮位于左侧(如我所标记的:

Gui app

提前感谢...

python python-3.x pyside2
1个回答
0
投票

[将项目添加到QHBoxLayout时是从左到右完成的,因此“ vbox”添加到了右侧,“ vbox”是按钮位置处理程序。

一种可行的解决方案是将QVBoxLayout放入标签内,而不是将其添加到QHBoxLayout中:

# ...
b1 = QtWidgets.QPushButton("Button1")
b2 = QtWidgets.QPushButton("Button2")

vbox = QtWidgets.QVBoxLayout(label)
vbox.addWidget(b1)
vbox.addStretch()
vbox.addWidget(b2)

hlay = QtWidgets.QHBoxLayout(central_widget)
hlay.setContentsMargins(0, 0, 0, 0)
hlay.addWidget(label)
hlay.addWidget(right_container)
# ...
© www.soinside.com 2019 - 2024. All rights reserved.