布局管理 水平 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())
布局管理 垂直 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())
布局管理 网格 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()