【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的使用 - 知乎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)相关推荐
- 【pyqt5学习】——tablewidget控件学习
目录 1.Table Widget 1.QTableWidget不能在mainwindow中随主窗口的大小变化? 2.将表格变为禁止编辑: 3.设置表格为整行选择 4.单个选中和多个选中的设置: 5. ...
- PyQt5学习--基本窗口控件--QLabel
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF动画,还可以被用作提示标记为其他控件.纯文本. ...
- PyQt5学习--基本窗口控件--QMainWindow
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件.比如将工具栏.菜单栏和状态栏等添加到布 ...
- PyQt5学习--基本窗口控件--加载文件-QFileDialog
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 QFileDialog是用来打开和保存文件的标准对话框.QFileDialog类继承自QDialog类. QFileDialo ...
- PyQt5学习--基本窗口控件--QButton类控件
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 PyQt5按钮的基类是QAbstractButton,为抽象类,不能实例化. 常见的按钮类有:QPushButton.QToo ...
- python嵌套html开发gui_python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例...
PyQt5布局控件QFormLayout简介 QFormLayout是label-field式的表单布局,顾明思议,就是实现表单方式的布局,表单是提示用户进行交互的一种模式,主要有两列组成,第一列用于 ...
- python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...
PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...
- pyqt5中控件缩放功能_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...
PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...
- 002柿饼派GUI模组学习之AnimatedImage控件调试
本文声明:本文为个人学习柿饼派显示模组的相关记录与经验. 002柿饼派GUI模组学习之AnimatedImage 控件调试 1.认识AnimatedImage控件 AnimatedImage是动态 ...
最新文章
- 国内三分之一世界500强企业正布局区块链,区块链风口已经出现
- DSP编程技巧---C/C++与汇编语言的交互之-使用编译器的内联函数
- JavaWeb学习总结(十七)——JSP中的九个内置对象
- crontab 运行pyhon脚本
- Python入门100题 | 第046题
- 苹果APPLE最新MI芯片笔记本安装第三方内核扩展
- java在进行修改时报400_java开发注册群组报错400
- 如何躲开技术人员35岁魔咒?【有惊喜系列】
- 突发:Maze 勒索团伙公开 LG 和 Xerox 的内部数据,达数十GB
- mysql的导入导出命令_mysql导入导出命令
- Erlang中的OTP简要
- 使用Ant定义生成文件
- 我被房东的由器了 怎么办呀 高手们请帮帮
- 声控报警器c语言程序,声控报警器(声控电路)
- Git for Windows 国内下载站,发布
- java 验证码识别_java验证码识别
- 读书会 | 第一季读书会《蛤蟆先生去看心理医生》完美收官啦
- Eclipse反编译插件 Enhanced Class Decompiler
- 编辑器、编译器以及IDE
- Hyperledger caliper 安装记录