目录

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的使用 - 知乎https://zhuanlan.zhihu.com/p/37854878

2、scroll area

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

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

[Qt]如何用好QScrollArea_祥的专栏-CSDN博客_qt scrollarea怎么用http://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 qstackedwidgethttps://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 qframehttps://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 qmdiareahttps://blog.csdn.net/jia666666/article/details/81670569

7、dock widget

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

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

7.1 悬浮状态

7.2 吸附状态

参考:

PyQt5高级界面控件之QDockWidget(八)_jia666666的博客-CSDN博客https://blog.csdn.net/jia666666/article/details/81669995

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

  1. 【pyqt5学习】——tablewidget控件学习

    目录 1.Table Widget 1.QTableWidget不能在mainwindow中随主窗口的大小变化? 2.将表格变为禁止编辑: 3.设置表格为整行选择 4.单个选中和多个选中的设置: 5. ...

  2. PyQt5学习--基本窗口控件--QLabel

    参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF动画,还可以被用作提示标记为其他控件.纯文本. ...

  3. PyQt5学习--基本窗口控件--QMainWindow

    参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件.比如将工具栏.菜单栏和状态栏等添加到布 ...

  4. PyQt5学习--基本窗口控件--加载文件-QFileDialog

    参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 QFileDialog是用来打开和保存文件的标准对话框.QFileDialog类继承自QDialog类. QFileDialo ...

  5. PyQt5学习--基本窗口控件--QButton类控件

    参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 PyQt5按钮的基类是QAbstractButton,为抽象类,不能实例化. 常见的按钮类有:QPushButton.QToo ...

  6. python嵌套html开发gui_python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例...

    PyQt5布局控件QFormLayout简介 QFormLayout是label-field式的表单布局,顾明思议,就是实现表单方式的布局,表单是提示用户进行交互的一种模式,主要有两列组成,第一列用于 ...

  7. python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

    PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...

  8. pyqt5中控件缩放功能_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

    PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...

  9. 002柿饼派GUI模组学习之AnimatedImage控件调试

    本文声明:本文为个人学习柿饼派显示模组的相关记录与经验. 002柿饼派GUI模组学习之AnimatedImage 控件调试 1.认识AnimatedImage控件   AnimatedImage是动态 ...

最新文章

  1. 国内三分之一世界500强企业正布局区块链,区块链风口已经出现
  2. DSP编程技巧---C/C++与汇编语言的交互之-使用编译器的内联函数
  3. JavaWeb学习总结(十七)——JSP中的九个内置对象
  4. crontab 运行pyhon脚本
  5. Python入门100题 | 第046题
  6. 苹果APPLE最新MI芯片笔记本安装第三方内核扩展
  7. java在进行修改时报400_java开发注册群组报错400
  8. 如何躲开技术人员35岁魔咒?【有惊喜系列】
  9. 突发:Maze 勒索团伙公开 LG 和 Xerox 的内部数据,达数十GB
  10. mysql的导入导出命令_mysql导入导出命令
  11. Erlang中的OTP简要
  12. 使用Ant定义生成文件
  13. 我被房东的由器了 怎么办呀 高手们请帮帮
  14. 声控报警器c语言程序,声控报警器(声控电路)
  15. Git for Windows 国内下载站,发布
  16. java 验证码识别_java验证码识别
  17. 读书会 | 第一季读书会《蛤蟆先生去看心理医生》完美收官啦
  18. Eclipse反编译插件 Enhanced Class Decompiler
  19. 编辑器、编译器以及IDE
  20. Hyperledger caliper 安装记录

热门文章

  1. java Unicode转码
  2. C# 温故而知新:Stream篇(七)
  3. AE 模板 天使之城
  4. 掌握ES6/ES2015核心内容
  5. js(Dom+Bom)第五天(2)
  6. 201671010456-张琼 实验十四 团队项目评审课程学习总结
  7. Asp.Net 设计模式 之 “简单工厂”模式
  8. Leetcode之二叉树(前200道)
  9. 编写一个简单的spring MVC程序
  10. 学习进度(2016.3.13)