目录
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