【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)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: (转发)详解汽车UDS诊断协议(一)
- 下一篇: 最新微信小程序抓包方法