上一章我们学习了单行的文本框QLineEdit类,下面我们要为多行的文本框的学习坐下准备,总结一下QFrame类和QAbstractScrollArea类

一.QFrame类

1.描述

QFrame的父类是QWIdget,主要用来控制边框的样式,例如突起、凹下、阴影。

下面的图就是各种效果和不同线号出来的效果

2.常用API

a.样式设定

frame.setFrameShape(QFrame.WinPanel)   #样式设定
frame.frameShape() #获取样式(int)
#样式枚举值
# QFrame.NoFrame #无样式——返回值0
# QFrame.Box #——返回值1
# QFrame.Panel #——返回值2
# QFrame.WinPanel #闹不大清,和第六个差不多,官方文档不建议使用——返回值3
# QFrame.HLine #横线——返回值4
# QFrame.VLine #竖线——返回值5
# QFrame.StyledPanel #矩形面板,外观取决于当前GUI样式——返回值6

设定的样式效果和上面的图一样(样式可能会和系统版本有差异)。

b.阴影效果

frame.setFrameShadow(QFrame.Sunken)#设置框架阴影效果
frame.frameShadow() #获取框架阴影效果
QFrame.Plain #框架和内容无相对3D效果——返回值16
QFrame.Raised #框架突起显示——返回值32
QFrame.Sunken #框架凹陷,返回值48

c.线宽设定

frame.setLineWidth()   #设置外线宽度
frame.lineWidth() #获取外线宽度
frame.setMidLineWidth()#设置中线宽度
frame.midLineWidth() #获取中线宽度
frame.frameWidth() #获取总线宽

要注意一点,有些效果是不仅仅有外线和中线的,我们运行一下这个代码

frame.setFrameShape(QFrame.Box)
frame.setFrameShadow(QFrame.Raised)
frame.setLineWidth(20)
frame.setMidLineWidth(12)
print(frame.frameWidth())

发现打印的线宽是52,在Box的突起样式中是有外线中线和内线的,内线的线宽和外线一致。所以总线宽就是52

d.样式设定的时候可以用管道符“|”所以下面两个代码是一样的效果

#方式1
frame.setFrameStyle(QFrame.Box|QFrame.Raised)
#方式2
frame.setFrameShape(QFrame.Box)
frame.setFrameShadow(QFrame.Raised)

但是用FrameStyle()获取样式则是所有效果的"|"运算。

e.边框矩形限制

frame.setFrameRect(QRect(10,10,10,10))   #设定框架的矩形限制
frame.frameRect() #获取框架矩形范围限制

3.信号

QFame的信号都是继承自QWidget的,没有特殊的信号,就不再说明了。

二.QAbstractScrollArea类

1.描述

由于有些时候控件内部内容需要滚动查看,就把QAbstractScrollArea抽象出来了,它是滚动区域的低级抽象,继承的父类是QFrame。

2.功能作用

QAbstractScrollArea类为一个抽象类,无法直接实例化,我们通过它的一个子类QTextEdit来说明它。

te = QTextEdit(window)

a.设置水平垂直滚动条

te.setHorizontalScrollBar()
te.setVerticalScrollBar()

这个先不讲,因为后面还有专门控件来说明

b.滚动条显示策略

te.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)     #垂直滚动条策略
te.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) #水平滚动条策略
te.horizontalScrollBarPolicy() #获取水平滚动条策略
te.verticalScrollBarPolicy() #获取垂直滚动条策略
#滚动条策略枚举值
Qt.ScrollBarAsNeeded #需要时显示——0
Qt.ScrollBarAlwaysOff #滚动条始终关闭——1
Qt.ScrollBarAlwaysOn #滚动条始终显示——2

c.角落控件

我们可以在控件的右下角设置一个控件,可以把QTextEdit()的右下角添加一个按钮

btn = QPushButton('&C',te)
te.setCornerWidget(btn) #设置角落控件
te.cornerWidget() #获取角落控件

出来的效果就是这样的

3.信号

QAbstractScrollArea的信号也是继承父类的,没有特别的信号。这里不再赘述。


总结完毕

GUI学习之十——QFrame和的QAbstractScrollArea学习总结的更多相关文章

  1. JMeter学习(十四)JMeter函数学习(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter函数是一些能够转化在测试树中取样器或者其他配置元件的域的特殊值.一个函数的调用就像这样:${_functio ...

  2. 轻松学习JavaScript十八:DOM编程学习之DOM简单介绍

    一DOM概述 DOM(文档对象模型)是HTML和XML的应用程序接口(API).DOM将把整个页面规划成由节点层级构成的文档. DOM描绘了一个层次化的节点树,执行开发者加入,移除和改动页面的某一部分 ...

  3. Python3 学习第十四弹: 模块学习六之re模块 + 正则表达式 (转)

    本文转自 AstralWind 的博客:Python正则表达式指南 特来收藏 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有 ...

  4. 爬虫学习(十九)——Scrapy的学习及其使用

    Scrapy框架的介绍 Scrapy,非常的强悍,通过python语言编写的,非常知名的爬虫框架 框架工作流程 框架流程图 基本工作流程; 1.引擎向spiders要url 2.引擎将要爬取的url给 ...

  5. 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周

    java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...

  6. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...

  7. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  8. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  9. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

随机推荐

  1. [转]Python 的列表解析式,集合解析式,字典解析式

    Python 的列表解析式,集合解析式,字典解析式 这三种都是 python 里面的语法糖. 语法糖,Syntactic Sugar,就是为了写程序时候少出错,发明的一些简便的方法,但不影响这个语法的 ...

  2. 用ASP.NET_Regsql.exe创建Session数据库

    CMD: C:\Users\ZhangSC>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe -S ZhangS ...

  3. 听说jupyter notebook代码提示不友好?

    作为一个业余的Python爱好者,我是一只在使用着最省事的pycharm 尽管以前见好多大牛都用过 但是今天又看到关于jupyter notebook的推送了,于是就尝试了一下 这好像也就是jupyt ...

  4. python 编码规范 (http://www.runoob.com/w3cnote/google-python-styleguide.html)

    命名约定 所谓"内部(Internal)"表示仅模块内可用, 或者, 在类内是保护或私有的. 用单下划线(_)开头表示模块变量或函数是protected的(使用import * f ...

  5. thinkphp5.1 的else if的使用方法

    首先thinkphp5.1获取session值是 {$think.session.user_id}或者{$Request.session.user_id}来获取session 下面是if else 的 ...

  6. linux随机字符串

    pwgen  -s 32 1 openssl passwd -salt openssl rand -base64 32 openssl rand -hex 100

  7. SQL Server死锁诊断--同一行数据在不同索引操作下引起的死锁

    死锁概述 对于数据库中出现的死锁,通俗地解释就是:不同Session(会话)持有一部分资源,并且同时相互排他性地申请对方持有的资源,然后双方都得不到自己想要的资源,从而造成的一种僵持的现象.当然,在任 ...

  8. WebApp与Native App有何区别呢?

                    Native App(其实就是用java其他语言开发的安卓系统或ios系统): 1.开发成本非常大. 一般使用的开发语言为JAVA.C++.Objective-C. 2 ...

  9. tensorflow object detection api graph rewriter

    目前,tensorflow 目标识别的api函数可以使用 graph rewriter这样的配置,这样配置的引入主要是为了模型压缩使用,具体设置参数有: syntax = "proto2&q ...

  10. unity中给图片换颜色

    slot边框.color = new Color32 (93,165,255,255);