5 PyQt5 QFrame


继承关系
在这里插入图片描述

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_())

效果如下:
在这里插入图片描述

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值