pyqt5-QTabWidget

QTabWidget 详解 – fengMisaka – 博客园 (cnblogs.com)

1、介绍

标签页组件。

2、类和初始化

class QTabWidget(QWidget):
    def __init__(self, parent=None):
        pass

3、属性

4、常用方法

(1)addTab

    def addTab(self, QWidget, *__args):
        """
        addTab(self, QWidget, str) -> int
        addTab(self, QWidget, QIcon, str) -> int
        """
        return 0
  • 添加子标签页,默认在末尾
  • QWidget参数,可以是QWidget组件本身,即一个窗口。也可以是继承其的组件,但一般不这么用
  • str参数,设置标签页上的标记文本
  • QIcon,设置标签页上的图片
  • int,返回一个int类型,为添加的标签页的索引

(2)clear

  • 清除所有标签子页,但是tab组件仍然占据空间

(3)count

  • 返回标签页的个数

(4)currentIndex

  • 返回当前标签页的索引,从0开始,最左边的标签页

(5)currentWidget

  • 返回当前标签页的组件,QWidget类型,即前面添加的组件

(6)widget

widget(self, int) -> QWidget
  • 作用是返回指定索引的页面,返回类型是QWidget
  • 如果指定QWidget添加到tab页中,则返回的就是添加的对象。
  • 如果该方法指定的索引就是当前tab页的索引,则返回对象和currentWidget方法获取的对象是相同的

(7)indexOf

    def indexOf(self, QWidget): # real signature unknown; restored from __doc__
        """ indexOf(self, QWidget) -> int """
        return 0
  • 根据标签子页绑定的组件查询其在标签页组件中的索引,从0开始

(8)insertTab

    def insertTab(self, p_int, QWidget, *__args): # real signature unknown; restored from __doc__ with multiple overloads
        """
        insertTab(self, int, QWidget, str) -> int
        insertTab(self, int, QWidget, QIcon, str) -> int
        """
        return 0
  • 和addTab类似,在指定位置插入,其他标签页后移
  • p_int最小为0

(9)isMove

  • 判断标签页是否可以移动,即拖动交互位置,返回bool

5、事件

(1)

    def currentChanged(self, p_int): # real signature unknown; restored from __doc__
        """ currentChanged(self, int) [signal] """
        pass

6、示例

# designer设计,加载ui运行
from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QPushButton, QWidget
from PyQt5.uic import loadUi
from PyQt5.QtCore import Qt


import sys

class my_window:
    # 记录使用过的标签索引
    index = 0

    def __init__(self):
        self.ui = loadUi('ui\\tab.ui')
        self.ui.pushButton.clicked.connect(self.init_tab)
        self.ui.tabWidget: QTabWidget
        # 绑定关闭标签子页
        self.ui.tabWidget.tabCloseRequested.connect(self.close_tab)
        self.ui.show()

    def close_tab(self, n):
        self.ui.tabWidget.removeTab(n)

    def add_tab(self):
        # 在次末尾处添加
        self.index = self.index + 1
        self.ui.tabWidget.insertTab(self.ui.tabWidget.count() - 1, QWidget(), str(self.index))

    def init_tab(self):
        """
        初始化,通过designer设计,会初始有两个标签子页,需要先去除,然后添加一个标签子页,并将其设置为按钮添加,点击可以添加子页 
        """
        self.ui.tabWidget: QTabWidget
        # 关闭所有标签子页
        self.ui.tabWidget.clear()
        # 添加一个标签子页,没有文本,索引为0
        self.ui.tabWidget.addTab(QWidget(), "")
        # 对索引为0的该标签子页设置按钮
        btn = QPushButton("+")
        self.ui.tabWidget.tabBar().setTabButton(0, self.ui.tabWidget.tabBar().RightSide, btn)
        #
        btn.clicked.connect(self.add_tab)
        self.add_tab()


if __name__ == '__main__':
    app = QApplication([])
    w = my_window()
    sys.exit(app.exec_())

点击初始化按钮

posted @ 2023-04-16 23:43  挖洞404  阅读(655)  评论(0编辑  收藏  举报