32-容器和容器控件-工具栏容器QToolBox

工具栏容器QToolBox

QToolBox类提供了一列选项卡式小部件项。

工具箱控件QToolBox与切换卡控件QTabWidget 有些类似,也是由多页构成每页有标题名称。

与切换卡不同的是,工具箱的标题是从上到下依次排列,每页的标题呈按钮状态,单击每页的标题,每页的窗口会显示在标题按钮下面,而切换卡的标题是按顺序展开,切换卡的标题面积比卡片窗口的面积小。工具箱界面的外观由两个按钮构成。

QToolBox是从QFrame类继承而来的。用QTolBox类创建实例对象的方法如下所示,其中parent是窗口或者容器类控件,参数 QtWindowFlags 用于设置窗口类型其取值参考31节中的内容,默认值是Qt.Widget。

from PySide6.QtWidgets import QToolBox

QToolBox(parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None,f: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags))-> None

工具箱是一个小部件,它在另一个上方显示一列选项卡,当前项目显示在当前选项卡下方。每个选项卡在选项卡列中都有一个索引位置。标签的项目是QWidget。

每个项目都有一个itemText() 、一个可选的itemIcon() 、一个可选的itemToolTip() 和一个小部件 ()。可以使用setItemText(),setItemIcon() 和setItemToolTip() 更改项目的属性。可以使用setItemEnabled() 单独启用或禁用每个项目。

使用addItem() 添加项目,或使用insertItem() 在特定位置插入项目。项目总数由count() 给出。可以使用delete删除项目,也可以使用removeItem() 从工具箱中删除项目。结合removeItem() 和insertItem() 可以将项目移动到不同的位置。

当前项目小部件的索引由currentIndex() 返回,并使用setCurrentIndex() 设置。可以使用indexOf() 找到特定项目的索引,并且给定索引处的项目由item() 返回。

当前项目更改时,会发出current更改 () 信号。

工具箱控件QToolBox的常用方法

工具箱控件QToolBox的常用方法如表所示。

工具箱中的每个窗口称为item(项或条目)。

  • 用addItem(QWidget,text; str)或addItem(QWidget,QIcon,text;str)方法在末尾添加项
    • QWidget 是对应的窗口或控件,
    • text是项的标题名称,可以在文本中添加"&"和字母设置快捷键;
  • 用insertItem(index:int,QWidget,text:str)或 insertItem(index:int,QWidget,QIcon,text;str)方法可以在指定位置插项;
  • 用removeItem(index:int)方法可以删除指定的项;
  • 用count()方法可以获取项的数量;
  • 用setItemText(int;str)方法可以设置项的标题名称;
  • 用setItemIcon(int,QIcon)方法可以指定项的图标
  • 用currentWidget()方法可以获取当前项的窗口;
  • 用widget(index:int)方法可以根据索引值获取项的窗口。
QToolBox的方法及参数类型返回值的类型说 明
addItem(QWidget,text:str)int在末尾添加项,text 是标题名称,QIcon 是图 标或QPixmap 图像
addItem(QWidget,QIcon,text;str)int在末尾添加项,text 是标题名称,QIcon 是图 标或QPixmap 图像
insertltem(index: int,QWidget,text: str)int根据索引插入项,新插入项的索引值是index
insertltem(index:int.QWidget,QIcon,str)int根据索引插入项,新插入项的索引值是index
[slot]setCurrentIndex(index:int)None将索引值是int的项设置成当前项
currentIndex()int获取当前项的索引
[slot]setCurrentWidget(QWidget)None将指定窗口设置成当前窗口
currentWidget()QWidget获取当前项的窗口
widget(index:int)int获取索引值是int的窗口
removeItem(index:int)None移除索引值是 int的项
count()int获取项的数量
indexOf(QWidget)int获取指定窗口的索引值
setItenEnabled(index: int,bool)None设置索引值是int的项是否激活
isltemEnabled(index:int)bool获取索引值是int的项是否激活
setltemIcon(index: int,QIcon)None设置项的图标
itemIcon(index:int)QIcon获取项的图标
setItemText(index:int,str)None设置项的标题名称
item Text(index:int)str获取项的标题名称
setItemToolTip(index: int,str)None设置项的提示信息
itemToolTip(index:int)str获取项的提示信息

工具箱控件QToolBox的常用方法和信号

工具箱控件只有1个信号currentChanged(index:int)当前项发生变化时发送参数是当前项的索引。

工具箱控件QToolBox实例

image-20230319022348845

# -*- coding: UTF-8 -*-
# File date: Hi_2023/2/28 22:59
# File_name: 01-ToolBox例子.py


import sys
from PySide6.QtCore import Qt.QSize
from PySide6.QtGui import QIcon
from PySide6.QtWidgets import(QApplication,QWidget,QToolBox,QToolButton,QGroupBox,QVBoxLayout,QHBoxLayout)


class DemotoolBox(QWidget):
    def __init__(self,parent=None):
        super(DemotoolBox,self).__init__(parent)

        # 设置窗口标题
        self.setWindowTitle('QToolBox Demo!')
        # 设置窗口大小
        self.resize(480,360)

        self.initUi()

    def initUi(self):
        self.names =['长跑','斯诺克','棒球']

        self.gamers =[
           [
                {'name':'赵一','pic':':../../../Resources/animal/m1.png'},
                {'name':'钱二','pic':'../../../Resources/animal/m2.png'},
            ],
           [
                {'name':'张三','pic':'../../../Resources/animal/m3.png'},
                {'name':'李四','pic':'../../../Resources/animal/m4.png'},
            ],
           [
                {'name':'王五','pic':'../../../Resources/animal/m5.png'},
                {'name':'郑六','pic':'../../../Resources/animal/m6.png'},
            ]
        ]

        vLayout = QVBoxLayout(self)
        self.toolBox = QToolBox(self)

        self.toolBox.currentChanged.connect(self.onToolBoxCurrentChanged)

        for index in range(0,3):
            self.toolBox.addItem(self.createGroup(index),self.names[index])

        vLayout.addWidget(self.toolBox)
        self.setLayout(vLayout)

    def createGroup(self,index):
        grpBox = QGroupBox(self)
        layout = QHBoxLayout(self)

        for category in self.gamers[index]:
            gamer = QToolButton(self)
            gamer.setText(category['name'])
            gamer.setIcon(QIcon(category['pic']))
            gamer.setIconSize(QSize(128,128))
            gamer.setAutoRaise(True)
            gamer.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
            layout.addWidget(gamer)

        grpBox.setLayout(layout)
        return grpBox

    def onToolBoxCurrentChanged(self):
        info ='您正在查看{}项目.'.format(self.names[self.toolBox.currentIndex()])
        print(info)


if __name__ =='__main__':
    app = QApplication(sys.argv)
    window = DemotoolBox()
    window.show()
    sys.exit(app.exec())

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值