布局
布局介绍¶
一个pyqt窗口中可以有多个控件 所谓布局,指的就是多个控件在窗口中的展示方式
布局方式大致分为:
- 水平布局
- 竖直布局
- 网格布局
- 表单布局
水平布局QHBoxLayout¶
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('水平布局')
"""------------------ 创建按钮 ------------------"""
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
btn4 = QPushButton('4')
btn5 = QPushButton('5')
# 创建布局
layout = QHBoxLayout()
# 添加布局到窗口中
w.setLayout(layout)
# 按钮控件添加到布局中
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
layout.addWidget(btn4)
layout.addWidget(btn5)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
垂直布局QVBoxLayout¶
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('竖直布局')
"""------------------ 创建5个按钮 ------------------"""
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
btn4 = QPushButton('4')
btn5 = QPushButton('5')
# 创建布局
layout = QVBoxLayout()
# 布局添加到窗口中
w.setLayout(layout)
# 控件添加到布局中
layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)
layout.addWidget(btn4)
layout.addWidget(btn5)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
表单布局QFormLayout¶
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
def func():
name = nameEdit.text()
age = int(ageEdit.text())
phone = phoneEdit.text()
print('姓名:%s,年纪:%d,电话:%s'%(name,age,phone))
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('表单布局')
"""------------------ 创建布局 ------------------"""
layout = QFormLayout()
# 添加到窗口中
w.setLayout(layout)
# 输入框
nameEdit = QLineEdit()
ageEdit = QLineEdit()
phoneEdit = QLineEdit()
btn = QPushButton('发送')
# 添加到布局中
layout.addRow('姓名',nameEdit)
layout.addRow('年纪',ageEdit)
layout.addRow('电话',phoneEdit)
layout.addRow('',btn)
# 信号和槽绑定
btn.clicked.connect(func)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
网格布局QGridLayout¶
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('表单布局')
"""------------------ 创建布局 ------------------"""
layout = QGridLayout()
# 添加到窗口中
w.setLayout(layout)
for i in range(4):
for j in range(4):
btn = QPushButton("按钮 {} {}".format(i, j))
layout.addWidget(btn, i, j)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())