我在这里有两个按钮,我希望将它们添加到左侧标签上的左上角。但是它总是在右侧添加按钮。这就是我所做的:
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()
它给出输出,将两个按钮相加出现在右侧。我知道,这都是因为水平布局。
我想要实现的是右侧的那些按钮位于左侧(如我所标记的:
提前感谢...
[将项目添加到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)
# ...