【pyqt5学习】——containers相关控件(tab widget、scroll area、stack widget、tool box、MDI area、dock widget)

目录

1、tab widget

2、scroll area

2.1 使用方法

Step1.拖入QScrollArea

​Step2.改变widget控件布局

​Step3.设置scrollAreaWidgetContents大小

 3、Tool Box

 4、Stacked Widget

4.1 案例展示

 5、frame

6、MDI AREA

 7、dock widget

7.1 悬浮状态

 7.2 吸附状态


containers是所有容器的统称,主要是为了容纳不同的对象类型,不同的container有不同的形式和特点。注:在同一个界面内的控件名不会出现重复,比如不同的tab页的控件名称也不会出现重复。但是在不同的弹出窗口的控件名称则可以重复。

1、tab widget

该控件主要的作用是利用tab页在同一个区域切换不同的界面,而不是将弹出新的窗口来显示界面,可以理解为Word文档上方的工具栏,点击开始、编辑、布局会出现不同的内容

 

PyQt5系列教程(50):QTabWidget的使用 - 知乎icon-default.png?t=LA92https://zhuanlan.zhihu.com/p/37854878

 

2、scroll area

该控件可以容纳不同的其他控件,当scroll area的大小小于contents的大小时,会出现滑条,这样就可以通过滚动滑条来查看所有scroll area中的控件,同时这也是一种适应不同分辨率电脑的方法。有些时候,我们界面能展示的区域被限定的很小,但是需要展现的控件、内容却很多,在限定大小的区域中无法全部显示。这个时候就需要滚动条了。在Qt中有一个很好的类 QScrollArea

重点是要掌握如何使得滑条出现,这里需要设置父级窗口之间的布局,达到和最高级窗口自适应的效果,如何修改scroll area下的一个子控件scrollAreaWidgetContents的最小窗口大小,当窗口小于该值时,会出现滑条。具体看下面博主的案例

 

 

[Qt]如何用好QScrollArea_祥的专栏-CSDN博客_qt scrollarea怎么用icon-default.png?t=LA92http://blog.csdn.net/humanking7/article/details/78559692

2.1 使用方法

本文直接用 Qt Designer 去设计ui文件,当然也可以直接在代码中写。

Step1.拖入QScrollArea

在Widget box中找到QScrollArea控件,拖入窗体。


Step2.改变widget控件布局

 其目的,就是让scrollArea随着窗体变化而变化。


Step3.设置scrollAreaWidgetContents大小

现在的窗体即时缩小到最小的情况,也不会出现滚动条,如下图所示。

 

这是因为我们没有设置scrollAreaWidgetContents这个控件的最小值。

    正常情况下将scrollAreaWidgetContents中的内容展示完全大小,如geometry所示为[201 x 174]。
    将它的minimumSize设置为[200 x 170]。

这样当界面的面积小于[200 x 170]时,界面就会出现滚动条。

 

 3、Tool Box

使用场景(类似于QQ中的好友分组):

这里主要是为了演示TOOL bOX控件的使用方法

1、tool box可以理解为一个抽屉组合,每一个按钮为一个抽屉,点击按钮则会拉开抽屉,显示出抽屉内部的内容

2、可以将不同的按钮归类到不同的tool box中,然后对按钮进行信号与槽的绑定

3、这里演示了三组按钮的归类,分别为tool button、pushbutton、radio button

 

 4、Stacked Widget

 该控件和tab widget一样,都是可以在同一个窗口内切换不同的界面,而不是新弹出窗口的方式来显示新界面。但是和tab widget不一样的是,tab widget控件自带了tab按键,可以通过tab按键来定义每一个页面的名称。而stacked widget控件则不能为每一个页面命名,但是在右上角有两个箭头,点击箭头可以切换到不同的页面,该控件一般和控件list widget配合使用,这样就可以通过点击list widget中的选项来控制显示不同的界面。当然需要注意的是要通过信号和槽来实现list widget和stacked widget进行联动。

 

PyQt5高级界面控件之QStackedWidget(七)_jia666666的博客-CSDN博客_pyqt qstackedwidgeticon-default.png?t=LA92https://blog.csdn.net/jia666666/article/details/81669425

4.1 案例展示

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *class StackedExample(QWidget):def __init__(self):super(StackedExample, self).__init__()#设置窗口初始位置和大小self.setGeometry(300,50,10,10)self.setWindowTitle('StackedWidget 例子')#创建列表窗口,添加条目self.leftlist=QListWidget()self.leftlist.insertItem(0,'联系方式')self.leftlist.insertItem(1,'个人信息')self.leftlist.insertItem(2,'教育程度')#创建三个小控件self.stack1=QWidget()self.stack2=QWidget()self.stack3=QWidget()self.stack1UI()self.stack2UI()self.stack3UI()#在QStackedWidget对象中填充了三个子控件self.stack=QStackedWidget(self)self.stack.addWidget(self.stack1)self.stack.addWidget(self.stack2)self.stack.addWidget(self.stack3)#水平布局,添加部件到布局中HBox=QHBoxLayout()HBox.addWidget(self.leftlist)HBox.addWidget(self.stack)self.setLayout(HBox)self.leftlist.currentRowChanged.connect(self.display)def stack1UI(self):layout=QFormLayout()layout.addRow('姓名',QLineEdit())layout.addRow('地址',QLineEdit())self.stack1.setLayout(layout)def stack2UI(self):# zhu表单布局,次水平布局layout = QFormLayout()sex = QHBoxLayout()# 水平布局添加单选按钮sex.addWidget(QRadioButton('男'))sex.addWidget(QRadioButton('女'))# 表单布局添加控件layout.addRow(QLabel('性别'), sex)layout.addRow('生日', QLineEdit())self.stack2.setLayout(layout)def stack3UI(self):# 水平布局layout = QHBoxLayout()# 添加控件到布局中layout.addWidget(QLabel('科目'))layout.addWidget(QCheckBox('物理'))layout.addWidget(QCheckBox('高数'))self.stack3.setLayout(layout)def display(self,i):#设置当前可见的选项卡的索引self.stack.setCurrentIndex(i)
if __name__ == '__main__':app=QApplication(sys.argv)demo=StackedExample()demo.show()sys.exit(app.exec_())

 

 5、frame

QFrame是一个基类,可以直接使用;主要是用来控制一些边框样式,例如凸起、凹下、阴影、线宽等;继承自QWidget

 具体可参考:

PyQt5之QFrame对象_李济雄的博客-CSDN博客_pyqt5 qframeicon-default.png?t=LA92https://blog.csdn.net/weixin_43496130/article/details/104242882

6、MDI AREA

一种同时显示多个窗口的方法是,创建多个独立的窗口,这些独立的窗口被称为SDI(Single Document Interface 单文档界面),每个窗口都有自己的菜单系统,工具栏等,这需要占用很多资源
MDI(Multiple Document Interface 多文档界面)应用程序占用较少的内存资源,子窗口可以放在主窗口的容器中,这个容器控件被称为QMidArea
QMidArea控件通常占据在QMainWindow对象的中央位置,子窗口在这个区域是QMdiSubWindow类的实例,可以设置任何QWidget作为子窗口对象的内部控件,子窗口在MDI区域进行级联排列布局

 参考链接:

PyQt5高级界面控件之QMidArea(九)_jia666666的博客-CSDN博客_pyqt5 qmdiareaicon-default.png?t=LA92https://blog.csdn.net/jia666666/article/details/81670569

 

 7、dock widget

该控件是一个窗口,可以吸附在主窗口的四边内,也可以悬浮在主窗口外。

QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持在浮动状态或者在指定位置作为子窗口附加到主窗口中,QMainWindow类的主窗口对象保留有一个用于停靠窗口的区域,这个区域在控件的中央周围

7.1 悬浮状态

 7.2 吸附状态

 参考:

PyQt5高级界面控件之QDockWidget(八)_jia666666的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/jia666666/article/details/81669995

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java使用原子类进行多线程的 i++ 操作示例

2019独角兽企业重金招聘Python工程师标准>>> 使用AtomicInteger原子类进行 i 操作 可以有类似 synchronized 实现同步的效果。 原子操作是不能分割的整体,没有其他线程能够中断或检查正在原子操作中的变量。一个原子类型就是一个原子操作可用的类型&…

mybatis实战教程(mybatis in action)之二:以接口的方式编程

前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID&…

Linux内核分析06

进程的描述和进程的创建 一,进程的描述 进程控制块PCB——task_struct (进程描述符),为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。 struct task_struct数据结…

【pyqt5学习】——pyqt5中.qrc资源文件的创建与编写

目录 一、说明 二、安装pyqt5以及相关工具(pyqt5、pyuic、pqrcc) 三、创建.ui文件 1、选中文件右键-external-pyqt5 打开GUI设计界面 2、创建一个界面(内含四个等大label框) 3、CTRLS保存 4、找到ui文件,右键--e…

C#学习笔记——25个经典问题

1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 o…

PHP的学习--RSA加密解密

PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了。 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了。 密码没加密,那攻…

【pyqt5学习】——最新版:配置external tools(designer、pyuic、pqrcc)

目录 1、pip install PyQt5 2、pip install pyqt5-tools 3、file-settings-tools-external tool 点击加号定义工具名字,名字随意便于区分即可 双击每一个工具名字,配置路径(注意每一个exe的路径) designer.exe pyuic.exe py…

Linux中vi命令详解

最近vi用的多,很多技巧不知道,备注一份, vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于 对Unix及Linux系统的任何版本&…

Monkey脚本编写

脚本优势:简单、快捷、不需要借助任何工具,可以做简单的性能测试 脚本缺点:只能简单实现坐标、按键等基本操作,无逻辑性 脚本格式: 脚本API: 例子: 打开浏览器,输入WWW.jikexueyuan.…

Tableview中Dynamic Prototypes动态表的使用

Tableview时IOS中应用非常广泛的控件,当需要动态的添加多条不同的数据时,需要用动态表来实现,下面给出一个小例子,适用于不确定Section的数目,并且每个Section中的行数也不同的情况,适合新手。首先&#xf…

appium 环境搭建 java

1 安装node.js 1.1 安装node.js http://nodejs.cn/download/ 1.2、下载后直接点击exe,按照提示一步一步的安装 1.3 安装成功后,运行cmd,输入node –v,如果安装成功,会输出如下版本信息 2 eclipse android开发环境搭建 2.1 用eclip…

C# 事件机制

在所有关于C#事件机制的介绍中,我更倾向于发布者/订阅者(Publisher/Subscriber)这种描述。理解事件机制并不是一件容易的事情,它所涉及的思想值得我们好好去研究。 本文资源来自《C#与.NET技术平台实战演练》——中国青年出版社 …

【数据库学习】——从零学习SQL语句(含SQL数据类型、SQL语句实例操作)

目录 ​ 0、创建数据库 1、调用指定的数据库 2、创建数据表 2.1、SQL数据类型 1).字符型数据: 3).整数型数据 4).精确小数型数据 5).近似数值类型 6).货币型数据 7).位类型数据 2.2…

struts2学习笔记(常见错误)

1、由于笔者使用的时最新的struts2 (version 2.5.14.1),之前下载的是all , 一直配置不上,然后查了google才下载的min版本。 这里面有配置struts2需要的必备的jar包,而至于上面的all里面lib里面的jar包实在太多,虽然我…

C#图解教程 第十二章 数组

数组数组定义重要细节数组的类型数组是对象一维数组和矩形数组实例化一维数组或矩形数组访问数组元素初始化数组显式初始化一维数组显式初始化矩形数组快捷语法隐式类型数组综合内容交错数组声明交错数组快捷实例化实例化交错数组比较矩形数组和交错数组foreach语句迭代变量是只…

【数据库学习】——windows、MySQL构建新闻管理系统(控制台版)

学习记录:【Python项目实战】PythonMySQL开发新闻管理系统全集_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Qb4y1b75q?p2&spm_id_frompageDriver 目录 一、项目介绍 1、项目结构 2、系统部分功能提前展示 3、项目流程图 4、项目设计的数据库以及…

微信红包API接口(PHP)

发布时间:2015年2月25日 / 分类:WEB开发,PHP / 74,825 / 241 ℃ 根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析。 红包接口调用请求代码,所有请求参数为必填参数与文档对应: 1234567891…

2016年个人技术总结(前端)

自我总结 参与项目 备注:[☆-表示比较吊的项目,-从头开始做,^-中间加入项目] 神马生活(微信公众号商城)[^] 神马学院[] <!------跳槽线--------> 大数据套件[☆][^] fable数据营销平台(加入新功能&#xff0c;交互)[^] fit问卷系统[] fit投放系统[] fit画像[^] 理财通点击…

彩色CCD相机工作原理

原理 黑白&#xff08;单色&#xff09;相机 CCD原理并不复杂。我们可以把它想象成一个顶部被打开的记忆芯片。因此光束可以射到记忆单元中。根据"光电效应”&#xff0c;这些光束在记忆单元中产生负电荷&#xff08;下图中右上部分&#xff09;。 曝光后&…

【HTML学习】——HTML常见标签属性和方法介绍

目录 1、HTML分块--------< div> 2、HTML段落--------< p> 3、HTML标题--------< h1>…< h6> 4、HTML链接--------< a> 1)< a href“http://www.baidu.com”>百度< /a>&#xff08;点击百度&#xff0c;直接跳转到网页&#xf…