分隔线学习

188 阅读1分钟

学习PyQt6中的分隔线。

image.png

上面图的程序如下。

from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, QHBoxLayout, QLabel
import sys


class MainWindows(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.ui()

    def ui(self):
        self.setWindowTitle("分隔线测试")
        self.resize(400, 100)  # 设置窗口大小
        ####################################
        # 布局
        ####################################
        v_layout = QVBoxLayout(self)  # 设置布局的父容器为当前窗口

        h_layout1 = QHBoxLayout()
        self.label1 = QLabel("QFrame.Sunken")
        self.frame1 = QFrame()
        self.frame1.setFrameShape(QFrame.Shape.HLine)  # 设置分隔线形状为水平线
        self.frame1.setFrameShadow(QFrame.Shadow.Sunken)  # 设置分隔线阴影
        self.frame1.setLineWidth(2)  # 设置分割线宽度
        # self.frame1.setFrameStyle("QFrame {color:red; }")
        self.frame1.setStyleSheet("QFrame {border:2px solid red;}")
        h_layout1.addWidget(self.label1)
        h_layout1.addWidget(self.frame1)

        h_layout2 = QHBoxLayout()
        self.label2 = QLabel("QFrame.Raised")
        self.frame2 = QFrame()
        self.frame2.setFrameShape(QFrame.Shape.HLine)  # 设置分隔线形状为水平线
        self.frame2.setFrameShadow(QFrame.Shadow.Raised)
        self.frame2.setStyleSheet("QFrame{border:2px dashed blue;}")
        h_layout2.addWidget(self.label2)
        h_layout2.addWidget(self.frame2)

        h_layout3 = QHBoxLayout()
        self.label3 = QLabel("QFrame.Plain")
        self.frame3 = QFrame()
        self.frame3.setFrameShape(QFrame.Shape.HLine)
        self.frame3.setFrameShadow(QFrame.Shadow.Plain)
        h_layout3.addWidget(self.label3)
        h_layout3.addWidget(self.frame3)

        h_layout4 = QHBoxLayout()
        self.label4 = QLabel("QFrame.Shape.NoFrame")
        self.frame4 = QFrame()
        self.frame4.setFrameShape(QFrame.Shape.NoFrame)
        self.frame4.setFrameShadow(QFrame.Shadow.Plain)
        h_layout4.addWidget(self.label4)
        h_layout4.addWidget(self.frame4)

        h_layout5 = QHBoxLayout()
        self.label5 = QLabel("QFrame.Shape.Box")
        self.frame5 = QFrame()
        self.frame5.setFrameShape(QFrame.Shape.Box)
        self.frame5.setFrameShadow(QFrame.Shadow.Plain)
        h_layout5.addWidget(self.label5)
        h_layout5.addWidget(self.frame5)

        h_layout6 = QHBoxLayout()
        self.label6 = QLabel("QFrame.Shape.Panel")
        self.frame6 = QFrame()
        self.frame6.setFrameShape(QFrame.Shape.Panel)
        self.frame6.setFrameShadow(QFrame.Shadow.Plain)
        h_layout6.addWidget(self.label6)
        h_layout6.addWidget(self.frame6)

        h_layout7 = QHBoxLayout()
        self.label7 = QLabel("QFrame.Shape.Panel")
        self.frame7 = QFrame()
        self.frame7.setFrameShape(QFrame.Shape.WinPanel)
        self.frame7.setFrameShadow(QFrame.Shadow.Plain)
        h_layout7.addWidget(self.label7)
        h_layout7.addWidget(self.frame7)

        h_layout8 = QHBoxLayout()
        self.label8 = QLabel("QFrame.Shape.Panel")
        self.frame8 = QFrame()
        self.frame8.setFrameShape(QFrame.Shape.StyledPanel)
        self.frame8.setFrameShadow(QFrame.Shadow.Plain)
        h_layout8.addWidget(self.label8)
        h_layout8.addWidget(self.frame8)

        v_layout.addLayout(h_layout1)
        v_layout.addLayout(h_layout2)
        v_layout.addLayout(h_layout3)
        v_layout.addLayout(h_layout4)
        v_layout.addLayout(h_layout5)
        v_layout.addLayout(h_layout6)
        v_layout.addLayout(h_layout7)
        v_layout.addLayout(h_layout8)

        # 设置窗口的主布局
        self.setLayout(v_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindows()
    w.show()
    sys.exit(app.exec())