继承关系
Public Functions | 描述 |
---|---|
QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | 构造函数 |
QRect frameRect() const | |
QFrame::Shadow frameShadow() const | 获得frame Shadow |
QFrame::Shape frameShape() const | 获得frame Shape |
int frameStyle() const | 获得frameStyle |
int frameWidth() const | 获得frameWidth |
int lineWidth() const | 获得line线宽 |
int midLineWidth() const | 获得midline线宽 |
void setFrameRect(const QRect &) | |
void setFrameShadow(QFrame::Shadow) | 设置阴影样式 |
void setFrameShape(QFrame::Shape) | 设置frame shape样式 |
void setFrameStyle(int style) | 设置Frame样式 |
void setLineWidth(int) | 设置line线宽 |
void setMidLineWidth(int) | 设置midline线宽 |
0 控件边框样式(框架+阴影+线宽 组合)
1 设置框架形状
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#from PyQt5 import QtCore,QtWidgets,QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sys
class DemoQFrame(QWidget):
def __init__(self):
super(DemoQFrame, self).__init__()
self.setWindowTitle("DemoQFrame例子")
self.resize(600,400)
self.mainlayout = QVBoxLayout(self)
frame01 = QFrame(self)
frame01.setFrameShape(QFrame.Box) #设置框架形状
self.mainlayout.addWidget(frame01)
frame02 = QFrame(self)
frame02.setFrameShape(QFrame.HLine ) # 水平分割线
self.mainlayout.addWidget(frame02)
frame03 = QFrame(self)
frame03.setFrameShape(QFrame.Panel )
frame03.setFrameShadow(QFrame.Raised) #设置框架阴影
self.mainlayout.addWidget(frame03)
if __name__ == '__main__':
app = QApplication(sys.argv)
test = DemoQFrame()
test.show()
sys.exit(app.exec_())
效果如下:
void setFrameShape(Shape)
# QFrame.Shape枚举值
QFrame.NoFrame # QFrame 无边框
QFrame.Box # QFrame 围绕其内容绘制一个框
QFrame.Panel # QFrame绘制一个面板,使内容显得凸起或凹陷
QFrame.VLine # QFrame绘制一条无框架的垂直线(用作分隔符)
QFrame.StyledPanel # 绘制一个矩形面板,其外观取决于当前的GUI样式。它可以升起或凹陷。
QFrame.HLine # QFrame绘制一条没有框架的水平线(用作分隔符)
2 设置框架阴影
void setFrameShadow(Shadow)
setFrameShadow(QFrame.Shadow)
# QFrame.Shadow枚举值
QFrame.Plain # 框架和内容与周围环境呈现水平;(没有任何3D效果)
QFrame.Raised # 框架和内容出现; 使用当前颜色组的浅色和深色绘制3D凸起线
QFrame.Sunken # 框架和内容出现凹陷; 使用当前颜色组的浅色和深色绘制3D凹陷线
3 设置线宽
# 外线宽度
setLineWidth(int width)
# 外线宽获取
lineWidth()
# 中线宽度
setMidLineWidth(int width)
# 获取中线线宽
midLineWidth()
# 总宽度
frameWidth()
4 void setFrameStyle(int style) 设置组合效果
void setFrameStyle(int style) 设置框架样式(框架形状+阴影)
以样式中第一行最后一个为例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#from PyQt5 import QtCore,QtWidgets,QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sys
class DemoQFrame(QWidget):
def __init__(self):
super(DemoQFrame, self).__init__()
self.setWindowTitle("DemoQFrame例子")
self.resize(600,400)
self.mainlayout = QVBoxLayout(self)
frame01 = QFrame(self)
frame01.setFrameStyle(QFrame.Box|QFrame.Plain)
frame01.setLineWidth(3)
frame01.setMidLineWidth(3)
self.mainlayout.addWidget(frame01)
if __name__ == '__main__':
app = QApplication(sys.argv)
test = DemoQFrame()
test.show()
sys.exit(app.exec_())
效果如下:
5 QFrame组合设置
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os,sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class FrameDemo(QWidget):
def __init__(self):
super(FrameDemo, self).__init__()
self.setFixedSize(500,450)
self.setWindowTitle("QFrame Demo演示")
self.layout = QVBoxLayout(self)
self.demoframe = QFrame()
self.demoframe.setFrameStyle(QFrame.NoFrame|QFrame.Plain)
self.demoframe.setLineWidth(1)
self.demoframe.setMidLineWidth(1)
self.demoframe.setFixedSize(480,200)
self.layout.addSpacing(10)
self.layout.addWidget(self.demoframe)
self.layout.addSpacing(20)
self.layout.addStretch()
# 设置 lineWidth
childlayout01 = QHBoxLayout()
childlayout01.addWidget(QLabel("线宽: "))
self.combox01 = QComboBox()
self.combox01.addItems(["1","2","3"])
childlayout01.addWidget(self.combox01)
self.btn01 = QPushButton("设置线宽")
childlayout01.addWidget(self.btn01)
self.layout.addLayout(childlayout01)
# 设置MidLineWidth
childlayout02 = QHBoxLayout()
childlayout02.addWidget(QLabel("MidLineWidth: "))
self.combox02 = QComboBox()
self.combox02.addItems(["1","2","3"])
childlayout02.addWidget(self.combox02)
self.btn02 = QPushButton("设置midline线宽")
childlayout02.addWidget(self.btn02)
self.layout.addLayout(childlayout02)
# 设置FrameShape
childlayout03 = QHBoxLayout()
childlayout03.addWidget(QLabel("FrameShape: "))
self.combox03 = QComboBox()
self.combox03.addItems(["NoFrame","Box","Panel","StyledPanel"])
childlayout03.addWidget(self.combox03)
self.btn03 = QPushButton("设置FrameShape")
childlayout03.addWidget(self.btn03)
self.layout.addLayout(childlayout03)
# 设置FrameShadow
childlayout04 = QHBoxLayout()
childlayout04.addWidget(QLabel("FrameShadow: "))
self.combox04 = QComboBox()
self.combox04.addItems(["Plain","Raised","Sunken"])
childlayout04.addWidget(self.combox04)
self.btn04 = QPushButton("设置FrameShadow")
childlayout04.addWidget(self.btn04)
self.layout.addLayout(childlayout04)
self.setall_btn = QPushButton("一键设置")
self.layout.addWidget(self.setall_btn)
#信号槽
self.btn01.clicked.connect(self.btn_setLineWidth)
self.btn02.clicked.connect(self.btn_setMidLineWidth)
self.btn03.clicked.connect(self.btn_setFrameShape)
self.btn04.clicked.connect(self.btn_setFrameShadow)
self.setall_btn.clicked.connect(self.btn_set_all)
def btn_set_all(self):
self.btn_setLineWidth()
self.btn_setMidLineWidth()
self.btn_setFrameShape()
self.btn_setFrameShadow()
def btn_setLineWidth(self):
value = int(self.combox01.currentText())
self.demoframe.setLineWidth(value)
def btn_setMidLineWidth(self):
value = int(self.combox02.currentText())
self.demoframe.setMidLineWidth(value)
def btn_setFrameShape(self):
if "NoFrame" == self.combox03.currentText():
self.demoframe.setFrameShape(QFrame.NoFrame)
elif "Box" == self.combox03.currentText():
self.demoframe.setFrameShape(QFrame.Box)
elif "Panel" == self.combox03.currentText():
self.demoframe.setFrameShape(QFrame.Panel)
elif "StyledPanel" == self.combox03.currentText():
self.demoframe.setFrameShape(QFrame.StyledPanel)
else:
pass
def btn_setFrameShadow(self):
if "Plain" == self.combox04.currentText():
self.demoframe.setFrameShadow(QFrame.Plain)
elif "Raised" == self.combox04.currentText():
print("=2=")
self.demoframe.setFrameShadow(QFrame.Raised)
elif "Sunken" == self.combox04.currentText():
self.demoframe.setFrameShadow(QFrame.Sunken)
else:
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
test = FrameDemo()
test.show()
sys.exit(app.exec_())
效果如下: