使用步骤:1.创建一个布局管理器对象
2.直接把布局管理器对象设置给需要布局的父控件
3.把需要布局的子控件添加到布局管理器当中
简单实例:
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) # 1.创建一个布局管理器对象 V_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(V_layout) # 3.把需要布局的子控件添加到布局管理器当中 V_layout.addWidget(label1) V_layout.addWidget(label2) V_layout.addWidget(label3) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) # 1.创建一个布局管理器对象 V_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(V_layout) # 3.把需要布局的子控件添加到布局管理器当中 V_layout.addWidget(label1) V_layout.addWidget(label2) V_layout.addWidget(label3) V_layout.setContentsMargins(20,30,40,50) # setContentsMargins:调整子控件在父控件的外边距;参数:左,上,右,下 if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) # 1.创建一个布局管理器对象 V_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(V_layout) # 3.把需要布局的子控件添加到布局管理器当中 V_layout.addWidget(label1) V_layout.addWidget(label2) V_layout.addWidget(label3) V_layout.setSpacing(20) # setSpacing:调整子控件相邻内边距 if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) # 1.创建一个布局管理器对象 H_layout = QHBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(H_layout) # 3.把需要布局的子控件添加到布局管理器当中 H_layout.addWidget(label1) H_layout.addWidget(label2) H_layout.addWidget(label3) self.setLayoutDirection(Qt.RightToLeft) # setLayoutDirection:调整子控布局方向 if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) label4 = QLabel(‘标签4‘) label4.setStyleSheet(‘background-color: blue;‘) # 1.创建一个布局管理器对象 H_layout = QHBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(H_layout) # 3.把需要布局的子控件添加到布局管理器当中 H_layout.addWidget(label1) H_layout.addWidget(label2) H_layout.addWidget(label3) H_layout.replaceWidget(label2,label4) # replaceWidget:替换控件;被替换在前 label2.hide()# 被替换的要隐藏,因为没有删除该控件 self.setLayoutDirection(Qt.RightToLeft) # setLayoutDirection:调整子控布局方向 if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
布局嵌套
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) label4 = QLabel(‘标签4‘) label4.setStyleSheet(‘background-color: blue;‘) # 1.创建一个布局管理器对象 H_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(H_layout) # 布局的嵌套 label5 = QLabel("标签5") label5.setStyleSheet("background-color: pink;") label6 = QLabel("标签6") label6.setStyleSheet("background-color: blue;") label7 = QLabel("标签7") label7.setStyleSheet("background-color: cyan;") V_layout = QBoxLayout(QBoxLayout.LeftToRight) V_layout.addWidget(label5) V_layout.addWidget(label6) V_layout.addWidget(label7) # 3.把需要布局的子控件添加到布局管理器当中 H_layout.addWidget(label1) H_layout.addLayout(V_layout) # 讲需要嵌套的子控件放在父嵌套中 H_layout.addWidget(label2) H_layout.addWidget(label3) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) label4 = QLabel(‘标签4‘) label4.setStyleSheet(‘background-color: blue;‘) # 1.创建一个布局管理器对象 H_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(H_layout) # 布局的嵌套 label5 = QLabel("标签5") label5.setStyleSheet("background-color: pink;") label6 = QLabel("标签6") label6.setStyleSheet("background-color: blue;") label7 = QLabel("标签7") label7.setStyleSheet("background-color: cyan;") V_layout = QBoxLayout(QBoxLayout.LeftToRight) V_layout.addWidget(label5) V_layout.addWidget(label6) V_layout.addWidget(label7) # 3.把需要布局的子控件添加到布局管理器当中 H_layout.addWidget(label1) H_layout.insertLayout(2,V_layout) # 讲需要嵌套的子控件插入父嵌套2后面 H_layout.addWidget(label2) H_layout.addWidget(label3) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
给定控件之间增加空白
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) label4 = QLabel(‘标签4‘) label4.setStyleSheet(‘background-color: blue;‘) # 1.创建一个布局管理器对象 H_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(H_layout) # 布局的嵌套 label5 = QLabel("标签5") label5.setStyleSheet("background-color: pink;") label6 = QLabel("标签6") label6.setStyleSheet("background-color: blue;") label7 = QLabel("标签7") label7.setStyleSheet("background-color: cyan;") V_layout = QBoxLayout(QBoxLayout.LeftToRight) V_layout.addWidget(label5) V_layout.addWidget(label6) V_layout.addWidget(label7) # 3.把需要布局的子控件添加到布局管理器当中 H_layout.addWidget(label1) H_layout.addSpacing(100) # addSpacing:给需要的控件之间增加空白 H_layout.addWidget(label2) H_layout.addWidget(label3) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
伸缩因子
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle(‘布局管理器使用‘) self.resize(500,500) self.setup_ui() def setup_ui(self): label1 = QLabel(‘标签1‘) label1.setStyleSheet(‘background-color: cyan;‘) label2 = QLabel(‘标签2‘) label2.setStyleSheet(‘background-color: yellow;‘) label3 = QLabel(‘标签3‘) label3.setStyleSheet(‘background-color: red;‘) label4 = QLabel(‘标签4‘) label4.setStyleSheet(‘background-color: blue;‘) # 1.创建一个布局管理器对象 H_layout = QVBoxLayout() # 垂直布局 # H_layout = QHBoxLayout() # 水平布局 # 2.直接把布局管理器对象设置给需要布局的父控件 self.setLayout(H_layout) # 布局的嵌套 label5 = QLabel("标签5") label5.setStyleSheet("background-color: pink;") label6 = QLabel("标签6") label6.setStyleSheet("background-color: blue;") label7 = QLabel("标签7") label7.setStyleSheet("background-color: cyan;") V_layout = QBoxLayout(QBoxLayout.LeftToRight) V_layout.addWidget(label5) V_layout.addWidget(label6) V_layout.addWidget(label7) # 3.把需要布局的子控件添加到布局管理器当中 H_layout.addWidget(label1,1)# H_layout.addWidget(label1,1)第二个参数即为伸缩因子 H_layout.addStretch(1) # addStretch:伸缩因子 H_layout.addWidget(label2,1) H_layout.addWidget(label3,1) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
添加行
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle("QFormLayout的学习") self.resize(500,500) self.setup_ui() def setup_ui(self): name_label = QLabel("姓名(&n):") age_label = QLabel("年龄(&g):") name_le = QLineEdit() age_sb = QSpinBox() name_label.setBuddy(name_le) age_label.setBuddy(age_sb) sex_label = QLabel("性别") male_rb = QRadioButton("男") female_rb = QRadioButton("女") h_layout = QHBoxLayout() h_layout.addWidget(male_rb) h_layout.addWidget(female_rb) submit_btn = QPushButton("提交") # 1. 创建布局管理器 layout = QFormLayout() # 2. 把布局管理器赋值给需要布局的父控件 self.setLayout(layout) # 3. 把需要布局的子控件交给布局管理器进行布局 # layout.addRow(name_label, name_le) layout.addRow("姓名(&n)", name_le) # addRow添加行 layout.addRow(sex_label, h_layout) # layout.addRow("性别:", h_layout) layout.addRow(age_label, age_sb) # layout.addRow("年龄(&g)", age_sb) layout.addRow(submit_btn) if __name__ == "__main__": app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
原文:https://www.cnblogs.com/mosewumo/p/12488779.html