文章目录
一、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. 根据参数写程序
其中右侧的WinPanel
和Raised
为setFrameStyle
的参数:
示例程序:
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 没有特有信号,所有信号继承自父类。