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_())
点击初始化按钮