学习PyQt6中的分隔线。
上面图的程序如下。
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())