700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【pyqt5学习】——containers相关控件(tab widget scroll area stack widget tool box MDI area dock widget)

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

时间:2020-12-22 21:15:46

相关推荐

【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的使用 - 知乎/p/37854878

2、scroll area

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

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

[Qt]如何用好QScrollArea_祥的专栏-CSDN博客_qt scrollarea怎么用/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 qstackedwidget/jia666666/article/details/81669425

4.1 案例展示

import sysfrom 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 qframe/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 qmdiarea/jia666666/article/details/81670569

7、dock widget

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

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

7.1 悬浮状态

7.2 吸附状态

参考:

PyQt5高级界面控件之QDockWidget(八)_jia666666的博客-CSDN博客/jia666666/article/details/81669995

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。