1 垂直布局和水平布局
python
复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton
import sys
from PyQt5.QtCore import Qt
"""
QVBoxLayout 组件沿垂直方向从上到下排列 登录框(标签 + 输入框 + 按钮竖排)
QHBoxLayout 组件沿水平方向从左到右排列 工具栏(多个按钮横排)
"""
class MyWindow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口大小
self.resize(400, 300)
# 设置窗口位置
self.move(600, 300)
# 设置标题
self.setWindowTitle('这是一个PyQT窗口')
# v_layout = QVBoxLayout() # 垂直布局
v_layout = QHBoxLayout() # 水平布局
btn1 = QPushButton('按钮1', self)
btn2 = QPushButton('按钮2', self)
btn3 = QPushButton('按钮3', self)
# 添加控件,把按钮放入盒子
v_layout.addWidget(btn1)
v_layout.addStretch(1) # 添加伸缩器,里面数字是代表比例值
v_layout.addWidget(btn2)
v_layout.addStretch(2) # 添加伸缩器
v_layout.addWidget(btn3)
# 把盒子放入窗体中
self.setLayout(v_layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
1.1 垂直布局
1.2 水平布局
2 网格布局
python
复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
import sys
from PyQt5.QtCore import Qt
"""
QGridLayout 网格布局管理器
"""
class MyWindow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口大小
self.resize(400, 300)
# 设置窗口位置
self.move(600, 300)
# 设置标题
self.setWindowTitle('这是一个PyQT窗口')
# 网格布局
g_layout = QGridLayout()
btn1 = QPushButton('按钮1', self)
btn2 = QPushButton('按钮2', self)
btn3 = QPushButton('按钮3', self)
btn4 = QPushButton('按钮4', self)
btn5 = QPushButton('按钮5', self)
g_layout.addWidget(btn1, 0, 0)
g_layout.addWidget(btn2, 0, 1)
g_layout.addWidget(btn3, 0, 2)
g_layout.addWidget(btn4, 1, 0)
g_layout.addWidget(btn5, 1, 2)
# 把盒子放入窗体中
self.setLayout(g_layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
3 表单布局
python
复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QPushButton, QLabel, QLineEdit, QHBoxLayout
import sys
"""
QFormLayout 表单布局管理器
QLabel 标签组件
QLineEdit 单行输入框
"""
class MyWindow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口大小
self.resize(400, 300)
# 设置窗口位置
self.move(600, 300)
# 设置标题
self.setWindowTitle('这是一个PyQT窗口')
# 表单布局
f_layout = QFormLayout()
f_layout.addRow(QLabel('用户名:'), QLineEdit())
f_layout.addRow(QLabel('密码:'), QLineEdit())
# 水平布局
h_layout = QHBoxLayout()
btn_ok = QPushButton("确认", self)
btn_cancel = QPushButton("取消", self)
# 加个弹簧隔开
h_layout.addStretch(1)
# 添加控件,把按钮放入盒子
h_layout.addWidget(btn_ok)
h_layout.addStretch(1)
h_layout.addWidget(btn_cancel)
h_layout.addStretch(1)
# 把水平布局添加到表单布局
f_layout.addRow(h_layout)
# 把盒子放入窗体中
self.setLayout(f_layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())