pyQt5 学习笔记(19)QFrame 边框设置

一、QFrame 简介

QFrame 是一个可以直接使用的类,主要是控制一些边框的样式,凸起,凹下,阴影等,其继承自QWidget

二、QFrame 的创建

可以使用QFrame来实例化一个QFrame对象:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.setWindowTitle("QFrame")
w.resize(300, 300)

#创建一个Frame
fra = QFrame(w)
fra.resize(100,100)
fra.setStyleSheet("background-color:green")

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行:
在这里插入图片描述
由于程序没有设置边框等,所以设置了QFrame的背景颜色,使它可以被观察到。

三、组合效果图

通过设置边框,阴影等,可以实现不同的效果,官方给出了一些示例(QFrame):
在这里插入图片描述
上图的每一个效果,都会对应三个项,所以如果表格中有合适的控件,只需要对应设置即可。以第一个(最左上角)的效果为例,它对应的情况是:
LineWidth() : 0
midLinewidth():0
(Box,plain)
在这里插入图片描述

四、QFrame 的功能(API)

1. 功能

QFrame有以下几个基本功能:

  • 设置框架形状
  • 设置框架阴影
  • 设置框架线宽
  • 框架样式
  • 框架矩形
  • 组合效果
相关API含义参数
setLineWidth(int width)设置外线宽度整型
midLineWidth()设置中线宽度整型
setFrameShape(QFrame.Shape)设置边框形状QFrame.Shape 枚举值
setFrameShadow(QFrame.Shadow)设置边框阴影QFrame.Shadow 枚举值
setFrameStyle(int style)设置边框样式枚举值
setFrameRect(QRect)设置边框矩形整型

2. QFrame 结构

以下程序创建一个带样式的QFrame

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.setWindowTitle("QFrame")
w.resize(300, 300)

fra = QFrame(w)
fra.resize(100,100)
fra.setStyleSheet("background-color:green")

fra.setLineWidth(7)                          #设置外线宽度
fra.setMidLineWidth(5)                       #设置中线宽度
fra.setFrameShadow(QFrame.Raised)            #设置阴影效果:凸起
fra.setFrameShape(QFrame.Box)                #设置图形为:Box
fra.setFrameRect(QRect(10,10,80,80))         #这是边框

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行:
在这里插入图片描述
上图最大的绿色为整个QFrame的大小,由于设置了边框,所以凸起部分看起来稍微小了一点。
其中fra.setFrameShadow(QFrame.Raised)fra.setFrameShape(QFrame.Box) 可写成fra.setFrameStyle(QFrame.Raised|QFrame.Box)

3. 使用总结

上文代码示例了如何创建一个QFrame,其实官方给出的使用效果中,右侧一列的参数正是setFrameStyle的参数。这里示例如何根据样式表来创建预期效果的控件。

1. 挑选目标样式

在这里插入图片描述

2. 根据参数写程序

其中右侧的WinPanelRaisedsetFrameStyle的参数:
示例程序:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.setWindowTitle("QFrame")
w.resize(300, 300)

fra = QFrame(w)
fra.resize(30,20)
fra.setStyleSheet("background-color:skyblue")

fra.setLineWidth(3)                          #设置外线宽度
fra.setMidLineWidth(3)                       #设置中线宽度
fra.setFrameStyle(QFrame.WinPanel|QFrame.Raised) #根据延时表参数写入

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行:
在这里插入图片描述

五、信号

QFrame 没有特有信号,所有信号继承自父类。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值