039.PyQt5_QFrame_带边框样式的框架

  • 由于QTextEdit多行文本控件继承自QFrame控件,所以我们先学QFrame控件

QFrame带边框样式的框架

  • 描述
    • 是一个基类, 可以选择直接使用
    • 主要是用来控制一些边框样式(例如:凸起、凹下、阴影、线宽)
  • 继承自QWidget
  • 功能作用
  • 创建
    QFrame(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())       # 创建对象的同时设置父对象,flags:标记,控制外观样式
    
  • 框架形状
    setFrameShape(QFrame.Shape)             # 设置框架形状
        # 参数 QFrame.Shape
                QFrame.NoFrame              # QFrame什么都没画
                QFrame.Box                  # QFrame围绕其内容绘制一个框(需要设置外线和中线的宽度)
                QFrame.Panel                # QFrame绘制一个面板,使内容显得凸起或凹陷(设置中线宽度没用)
                QFrame.HLine                # QFrame绘制一条没有框架的水平线(用作分隔符)
                QFrame.VLine                # QFrame绘制一条无框架的垂直线(用作分隔符)
                QFrame.StyledPanel          # 绘制一个矩形面板,其外观取决于当前的GUI样式。它可以升起或凹陷。
                QFrame.WinPanel             # 绘制一个可以像Windows 2000中那样凸起或凹陷的矩形面板。
                                            # 指定此形状可将线宽设置为2像素。WinPanel是为了兼容性而提供的。
                                            # 对于GUI样式独立性,建议使用StyledPanel。
    
    frameShape() -> QFrame.Shape            # 获取框架形状
    
  • 框架阴影
    setFrameShadow(QFrame.Shadow)           # 设置框架阴影
        # 参数 QFrame.Shadow
                    QFrame.Plain            # 框架和内容与周围环境呈现水平;(没有任何3D效果)
                    QFrame.Raised           # 框架和内容出现; 使用当前颜色组的浅色和深色绘制3D凸起线
                    QFrame.Sunken           # 框架和内容出现凹陷; 使用当前颜色组的浅色和深色绘制3D凹陷线
    
  • 框架线宽
    setLineWidth(int width)                 # 设置外线宽度
    lineWidth()                             # 获取外线宽度
    
    setMidLineWidth(int width)              # 设置中线宽度(部分框架形状,设置框架中线宽度是没用的)
    midLineWidth()                          # 获取中线宽度
    
    frameWidth()                            # 获取总宽度(2*外线宽度 + 中线宽度)
                                            # 个人理解:总线宽 = 外线宽度 + 中线宽度 + 内线宽度(内线宽度 = 外线宽度,类似于内部阴影)
    
  • 框架样式
    setFrameStyle(int style)                # 设置框架样式
        # 参数 style                        # 形状和阴影的组合,通过按位或(|)组合
    
    frameStyle() -> style                   # 获取框架样式
    
  • 框架矩形
    setFrameRect(QRect)                     # 设置框架矩形距离边框的距离
        # 参数  QRect
                QRect(int, int, int, int)   # 左、上、右、下
                QRect(QPoint, QPoint)
                QRect(QPoint, QSize)
                QRect(QRect)
    
    frameRect() -> QRect                    # 获取框架的矩形对象,返回QRect对象
    
  • 组合效果图
    • 039.PyQt5_QFrame_带边框样式的框架_第1张图片

  • 可用信号
    • 均是继承自父类的可用信号

  • 示例代码
  • 示例1
    from PyQt5.Qt import *
    import sys
    
    app = QApplication(sys.argv)
    window = QWidget()
    window.resize(500, 500)
    window.setWindowTitle('QFrame-功能测试')
    
    frame = QFrame(window)
    frame.setStyleSheet('background-color: cyan;')
    frame.resize(200, 200)
    frame.move(100, 100)
    
    # ****************设置框架形状****************** 开始
    # setFrameShape(QFrame.Shape)             # 设置框架形状
    # QFrame.NoFrame              # QFrame什么都没画
    # QFrame.Box                  # QFrame围绕其内容绘制一个框(有边框)(需要设置外线和中线的宽度)
    # QFrame.Panel                # QFrame绘制一个面板,使内容显得凸起或凹陷(设置中线宽度没用)
    # QFrame.HLine                # QFrame绘制一条没有框架的水平线(用作分隔符)
    # QFrame.VLine                # QFrame绘制一条无框架的垂直线(用作分隔符)
    # QFrame.StyledPanel          # 绘制一个矩形面板,其外观取决于当前的GUI样式。它可以升起或凹陷。
    # QFrame.WinPanel             # 绘制一个可以像Windows 2000中那样凸起或凹陷的矩形面板,对于GUI样式独立性,建议使用StyledPanel。
    
    # frame.setFrameShape(QFrame.NoFrame)
    # frame.setFrameShape(QFrame.Box)
    # frame.setFrameShape(QFrame.Panel)
    # frame.setFrameShape(QFrame.HLine)
    # frame.setFrameShape(QFrame.VLine)
    # frame.setFrameShape(QFrame.StyledPanel)
    # frame.setFrameShape(QFrame.WinPanel)
    # ****************设置框架形状****************** 结束
    
    # ****************设置框架阴影****************** 开始
    # setFrameShadow(QFrame.Shadow)  # 设置框架阴影
    # QFrame.Plain  # 框架和内容与周围环境呈现水平;(没有任何3D效果)
    # QFrame.Raised  # 框架和内容出现; 使用当前颜色组的浅色和深色绘制3D凸起线
    # QFrame.Sunken  # 框架和内容出现凹陷; 使用当前颜色组的浅色和深色绘制3D凹陷线
    
    # frame.setFrameShadow(QFrame.Plain)
    # frame.setFrameShadow(QFrame.Raised)
    # frame.setFrameShadow(QFrame.Sunken)
    # ****************设置框架阴影****************** 结束
    
    # ****************设置框架线宽****************** 开始
    # setLineWidth(int width)  # 设置外线宽度
    # lineWidth()  # 获取外线宽度
    # setMidLineWidth(int width)  # 设置中线宽度(部分框架形状,设置框架中线宽度是没用的)
    # midLineWidth()  # 获取中线宽度
    # frameWidth()  # 获取总宽度
    
    frame.setLineWidth(5)
    frame.setMidLineWidth(12)
    
    # ****************设置框架线宽****************** 结束
    
    # ****************设置框架样式****************** 开始
    # 相关枚举
    # Box = 1
    # HLine = 4
    # NoFrame = 0
    # Panel = 2
    # Plain = 16
    # Raised = 32
    # Shadow_Mask = 240
    # Shape_Mask = 15
    # StyledPanel = 6
    # Sunken = 48
    # VLine = 5
    # WinPanel = 3
    
    frame.setFrameStyle(1|32)       
    
    # 相当于 
    # frame.setFrameShape(QFrame.Box)
    # frame.setFrameShadow(QFrame.Raised)
    
    # ****************设置框架样式****************** 结束
    
    # ****************框架矩形****************** 开始
    frame.setFrameRect(QRect(20,20,60,60))
    
    # ****************框架矩形****************** 结束
    window.show()
    sys.exit(app.exec_())

     

你可能感兴趣的:(PyQt5,qt5,pyqt,python,qt,开发语言)