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_())
posted @ 2023-01-16 10:49  测开星辰  阅读(788)  评论(0编辑  收藏  举报