26.PyQt5【高级组件】工具箱-QToolBox
一、前言
QToolBox控件提供了一个可进行一列选项卡操作方式,在每个选项卡内可包含不同的控件布局。QToolBox将选项卡一个一个地显示,当前项目显示在当前选项卡下方。每个选项卡在选项卡列中都有一个索引位置。一个选项卡的项目是一个QWidget。
二、学习目标
1.QToolBox常用方法
2.QToolBox常用信号
3.QToolBox组件的应用
三、知识点
1.【QToolBox常用方法】
方法 | 描述 |
---|---|
addItem(widget,icon,text) addItem(widget,text) |
将小部件添加到工具箱底部的新选项卡中。新选项卡的文本设置为text。 |
insertItem(index,widget,icon,text) insertItem(index,widget,text) |
将小部件插入位置index处,如果索引超出范围,则将其插入工具箱的底部。新项目的文本设置为text。 |
removeItem(index) | 从工具箱中删除位置索引处的项目。 |
setCurrentIndex(index) | 设置当前显示指定索引的工具集 |
setCurrentWidget(widget) | 设置当前显示指定组件的工具集 |
setItemText(index,text) | 将位置索引处的项目的文本设置为text |
setItemEnabled(index,enabled) | 如果启用为true,则启用位置索引处的项目;否则为0。否则,位置索引处的项目被禁用。 |
setItemIcon(index,icon) | 将位置索引处的项目的图标设置为icon。 |
widget(index) | 返回位于位置index的小部件,如果没有此类项,则返回None |
indexOf(widget) | 返回窗口小部件的索引,如果该项不存在,则返回-1。 |
count() | 此属性保存工具箱中包含的项目数。默认情况下,此属性的值为0。 |
currentIndex() | 该属性保存当前项目的索引。默认情况下,对于空工具箱,此属性的值为-1。 |
currentWidget() | 返回指向当前小部件的指针,如果没有此类项,则返回None。 |
isItemEnabled(index) | 如果启用了位置索引处的项目,则返回true;否则,返回true。否则返回false。 |
itemText(index) | 返回位于位置index处的项目的文本,如果index超出范围,则返回一个空字符串。 |
2.【QToolBox常用信号】
信号 | 描述 |
---|---|
currentChanged(index) | 工具箱切换项目时,触发信号 |
3.【QToolBox组件的应用】
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QToolBox, QPushButton, QFrame
class QmyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类的构造函数,创建QWidget窗体
self.setupUi()
def setupUi(self):
"""页面初始化"""
# 设置窗体大小及标题
self.resize(500, 400)
self.setWindowTitle("QToolBox组件示例")
# 创建布局
self.main_layout = QVBoxLayout()
# QVBoxLayout组件定义
self.toolBox = QToolBox() # 定义工具箱
self.setupTool1() # 初始化构造的工具集1
self.setupTool2() # 初始化构造的工具集2
# QVBoxLayout组件设置
self.toolBox.setCurrentIndex(1)
self.toolBox.setItemIcon(0, QIcon("logo.png"))
self.toolBox.setItemIcon(1, QIcon("logo.png"))
# QVBoxLayout绑定信号
self.toolBox.currentChanged.connect(self.on_toolBox_currentChanged)
# 将组件添加到布局中
self.main_layout.addWidget(self.toolBox)
# 为窗体添加布局
self.setLayout(self.main_layout)
def setupTool1(self):
"""槽函数"""
# 1.创建一个frame容器
frame = QFrame()
# 2.创建垂直布局实例
layout = QVBoxLayout()
# 3.创建子组件,如按钮组件
button1 = QPushButton("Button1")
button2 = QPushButton("Button2")
# 4.为布局添加子组件
layout.addWidget(button1)
layout.addWidget(button2)
# 将布局添加到frame容器
frame.setLayout(layout)
self.toolBox.addItem(frame, "Tool 1")
def setupTool2(self):
"""槽函数"""
# 1.创建一个frame容器
frame = QFrame()
# 2.创建垂直布局实例
layout = QVBoxLayout()
# 3.创建子组件,如按钮组件
button3 = QPushButton("Button3")
button4 = QPushButton("Button4")
# 4.为布局添加子组件
layout.addWidget(button3)
layout.addWidget(button4)
# 将布局添加到frame容器
frame.setLayout(layout)
self.toolBox.addItem(frame, "Tool 2")
def on_toolBox_currentChanged(self, index):
"""槽函数"""
print("当前切换的工具集为:{}".format(str(index)))
if __name__ == '__main__':
app = QApplication(sys.argv)
myMain = QmyWidget()
myMain.show()
sys.exit(app.exec_())