PyQt6之容器布局
示例代码:
# _*_ coding: UTF-8 _*_
# 开发团队 : 大军安全
# 开发人员 : Dreams
# 开发时间 : 2025/9/19 22:03
# 文件名称 : frame.py
# 开发工具 : PyCharm
# 开发任务 : 容器布局示例
import sysfrom PyQt6.QtWidgets import QWidget, QApplication, QFrame, QVBoxLayout, QPushButton, QComboBox, QHBoxLayout, QLabelclass DemoFrame(QWidget):def __init__(self):super(DemoFrame, self).__init__()self.setWindowTitle("Demo Frame")self.setFixedSize(500, 350)# 创建分隔对象self.frame = QFrame()self.frame.setFrameStyle(QFrame.Shape.Panel)self.frame.setLineWidth(1)self.frame.setMidLineWidth(1)self.frame.setFixedSize(480, 200)# 创建外垂直布局self.vLayout = QVBoxLayout(self)self.vLayout.addSpacing(10)self.vLayout.addWidget(self.frame)self.vLayout.addStretch(20)self.vLayout.addStretch()# 创建分隔容器中使用的控件self.btn1 = QPushButton("设置LineWidth")self.btn2 = QPushButton("设置midline")self.btn3 = QPushButton("设置FrameShape")self.btn4 = QPushButton("设置FrameShadow")self.cb1 = QComboBox()self.cb1.addItems(["1","2","3"])self.cb2 = QComboBox()self.cb2.addItems(["1","2","3"])self.cb3 = QComboBox()self.cb3.addItems(["NoFrame", "Box", "Panel", "StyledPanel"])self.cb4 = QComboBox()self.cb4.addItems(["Sunken", "Plain", "Raised"])# 创建水平布局1,分别加入标签、下拉列表框、命令按钮对象、加入外垂直布局hLayout1 = QHBoxLayout()hLayout1.addWidget(QLabel("LineWidth:"))hLayout1.addWidget(self.cb1)hLayout1.addWidget(self.btn1)self.vLayout.addLayout(hLayout1)# 创建水平布局2,分别加入标签、下拉列表框、命令按钮对象、加入外垂直布局hLayout2 = QHBoxLayout()hLayout2.addWidget(QLabel("MidLineWIdth:"))hLayout2.addWidget(self.cb2)hLayout2.addWidget(self.btn2)self.vLayout.addLayout(hLayout2)# 创建水平布局3,分别加入标签、下拉列表框、命令按钮对象、加入外垂直布局hLayout3 = QHBoxLayout()hLayout3.addWidget(QLabel("FrameShape:"))hLayout3.addWidget(self.cb3)hLayout3.addWidget(self.btn3)self.vLayout.addLayout(hLayout3)# 创建水平布局4,分别加入标签、下拉列表框、命令按钮对象、加入外垂直布局hLayout4 = QHBoxLayout()hLayout4.addWidget(QLabel("FrameShadow:"))hLayout4.addWidget(self.cb4)hLayout4.addWidget(self.btn4)self.vLayout.addLayout(hLayout4)# 关联4个命令按钮对应的槽函数self.btn1.clicked.connect(self.setLineWidth)self.btn2.clicked.connect(self.setMidLineWidth)self.btn3.clicked.connect(self.setFrameShape)self.btn4.clicked.connect(self.setFrameShadow)# 设置线宽、形状、方向和阴影def setLineWidth(self):value = int(self.cb1.currentText())self.frame.setLineWidth(value)def setMidLineWidth(self):value = int(self.cb2.currentText())self.frame.setMidLineWidth(value)def setFrameShape(self):if self.cb3.currentText() == "NoFrame":self.frame.setFrameShape(QFrame.Shape.NoFrame)elif self.cb3.currentText() == "Box":self.frame.setFrameShape(QFrame.Shape.Box)elif self.cb3.currentText() == "Panel":self.frame.setFrameShape(QFrame.Shape.Panel)elif self.cb3.currentText() == "StyledPanel":self.frame.setFrameShape(QFrame.Shape.StyledPanel)def setFrameShadow(self):if self.cb4.currentText() == "Sunken":self.frame.setFrameShadow(QFrame.Shadow.Sunken)elif self.cb4.currentText() == "Plain":self.frame.setFrameShadow(QFrame.Shadow.Plain)elif self.cb4.currentText() == "Raised":self.frame.setFrameShadow(QFrame.Shadow.Raised)if __name__ == '__main__':app = QApplication(sys.argv)demo = DemoFrame()demo.show()demo.raise_()sys.exit(app.exec())
示例效果: