
addLayout(…)
QBoxLayout.addLayout(QLayout, int stretch=0)
addWidget(…)
QBoxLayout.addWidget(QWidget, int stretch=0, Qt.Alignment alignment=0)
为布局中添加控件,stretch(拉伸因子)只适用与QBoxLayout,widget和box会随着stretch的变大而增大;alignment指定对齐的方式
addSpacing(…)
QBoxLayout.addSpacing(int)
通过该方法增加额外的space。
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
bt1 = QPushButton("Button 1", self)
bt2 = QPushButton("Button 2", self)
bt3 = QPushButton("Button 3", self)
h_box = QHBoxLayout()
h_box.addWidget(bt1)
h_box.addWidget(bt2)
h_box.addWidget(bt3)
self.setLayout(h_box)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
bt11 = QPushButton("Button 11", self)
bt22 = QPushButton("Button 22", self)
bt33 = QPushButton("Button 33", self)
v_box = QVBoxLayout()
v_box.addWidget(bt11)
v_box.addWidget(bt22)
v_box.addWidget(bt33)
self.setLayout(v_box)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
QGridLayout.addWidget(QWidget)
QGridLayout.addWidget(QWidget * widget, int row, int column, Qt.Alignment alignment = 0 )
QGridLayout.addWidget(QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt.Alignment alignment = 0)
当添加的组件跨越很多行或者列的时候,使用该方法。
addLayout(…) 参数说明同addWidget
QGridLayout.addLayout(QLayout, int, int, Qt.Alignment alignment=0)
QGridLayout.addLayout(QLayout, int, int, int, int, Qt.Alignment alignment=0)
其中参数说明同addWidget.
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.init_ui()
def init_ui(self):
buttons = [QPushButton(str(i), self) for i in range(7)]
grid = QGridLayout()
grid.addWidget(buttons[0], 0, 0)
grid.addWidget(buttons[1], 0, 1)
grid.addWidget(buttons[2], 0, 2)
grid.addWidget(buttons[3], 0, 3)
grid.addWidget(buttons[4], 1, 0)
grid.addWidget(buttons[5], 1, 1)
grid.addWidget(buttons[6], 1, 2, 1, 2)
self.setLayout(grid)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
| addRow(…)
| QFormLayout.addRow(QWidget, QWidget)
| QFormLayout.addRow(QWidget, QLayout)
| QFormLayout.addRow(str, QWidget)
| QFormLayout.addRow(str, QLayout)
| QFormLayout.addRow(QWidget)
| QFormLayout.addRow(QLayout)
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.init_ui()
def init_ui(self):
form_layout = QFormLayout()
label1 = QLabel("账号", self)
label2 = QLabel("密码", self)
label3 = QLabel("校验码", self)
line_edit1 = QLineEdit()
line_edit2 = QLineEdit()
line_edit2.setEchoMode(QLineEdit.Password)
line_edit3 = QLineEdit()
form_layout.addRow(label1, line_edit1)
form_layout.addRow(label2, line_edit2)
form_layout.addRow(label3, line_edit3)
self.setLayout(form_layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.init_ui()
def init_ui(self):
# 先分别做好两个水平布局,然后再进行垂直布局
v_box = QVBoxLayout()
label = QLabel("The Title", self)
h_box1 = QHBoxLayout()
for i in range(3):
button = QPushButton(str(i), self)
h_box1.addWidget(button)
h_box2 = QHBoxLayout()
for i in range(4):
button = QPushButton(str(i), self)
h_box2.addWidget(button)
v_box.addWidget(label)
v_box.addLayout(h_box1)
v_box.addLayout(h_box2)
self.setLayout(v_box)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())

