[PyQt6] PartⅡ. QHBoxLayout&QVBoxLayout&QGridLayout

布局管理 水平 horizontal

from PyQt6.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton
from PyQt6.QtGui import QIcon
import sys

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

        self.setGeometry(200, 200, 700, 400) # 设置窗口大小
        self.setWindowTitle("Python QHBoxLayout")
        self.setWindowIcon(QIcon('images/example.jpg')) # 设置图片,没有的话不显示

        hbox = QHBoxLayout()

        btn1 = QPushButton("Click One")
        btn2 = QPushButton("Click Two")
        btn3 = QPushButton("Click Three")
        btn4 = QPushButton("Click Four")

        hbox.addWidget(btn1)
        hbox.addStretch(1)
        hbox.addWidget(btn2)
        hbox.addStretch(1)
        hbox.addWidget(btn3)
        hbox.addStretch(1)
        hbox.addWidget(btn4)

        # hbox.addSpacing(100) #
        hbox.addStretch(5) # 将空白按比例分配,如果没有其他的同样语句的话,这里面数字几个都一样

        self.setLayout(hbox) # 将主窗口设置为hbox布局

app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())

horizontal

布局管理 垂直 vertical

from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
from PyQt6.QtGui import QIcon
import sys

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

        self.setGeometry(200, 200, 700, 400) # 设置窗口大小
        self.setWindowTitle("Python QVBoxLayout")
        self.setWindowIcon(QIcon('images/example.jpg')) # 设置图片,没有的话不显示

        vbox = QVBoxLayout()

        btn1 = QPushButton("Click One")
        btn2 = QPushButton("Click Two")
        btn3 = QPushButton("Click Three")
        btn4 = QPushButton("Click Four")

        vbox.addWidget(btn1)
        vbox.addStretch(1)
        vbox.addWidget(btn2)
        vbox.addStretch(1)
        vbox.addWidget(btn3)
        vbox.addStretch(1)
        vbox.addWidget(btn4)

        # vbox.addSpacing(100) #
        vbox.addStretch(5) # 将空白按比例分配,如果没有其他的同样语句的话,这里面数字几个都一样

        self.setLayout(vbox) # 将主窗口设置为vbox布局

app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())

vertical

布局管理 网格 grid

from PyQt6.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
from PyQt6.QtGui import QIcon
import sys

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

        self.setGeometry(200, 200, 700, 400) # 设置窗口大小
        self.setWindowTitle("Python QGridLayout")
        self.setWindowIcon(QIcon('images/example.jpg')) # 设置图片,没有的话不显示

        grid = QGridLayout()

        btn1 = QPushButton("Click One")
        btn2 = QPushButton("Click Two")
        btn3 = QPushButton("Click Three")
        btn4 = QPushButton("Click Four")
        btn5 = QPushButton("Click Five")
        btn6 = QPushButton("Click Six")
        btn7 = QPushButton("Click Seven")
        btn8 = QPushButton("Click Eight")

        grid.addWidget(btn1, 0, 0)
        # vbox.addStretch(1)
        grid.addWidget(btn2, 0, 1)
        # vbox.addStretch(1)
        grid.addWidget(btn3, 0, 2)
        # vbox.addStretch(1)
        grid.addWidget(btn4, 0, 3)
        grid.addWidget(btn5, 1, 0)
        grid.addWidget(btn6, 1, 1)
        grid.addWidget(btn7, 1, 2)
        grid.addWidget(btn8, 1, 3)

        # vbox.addSpacing(100) #
        # vbox.addStretch(5) # 将空白按比例分配,如果没有其他的同样语句的话,这里面数字几个都一样

        self.setLayout(grid) # 将主窗口设置为vbox布局

app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())

reference

QT中布局器的addStretch函数使用效果
【Python】【PyQt5】addStretch()

posted @ 2022-05-22 12:30  deadright  阅读(100)  评论(0编辑  收藏  举报