一、前言
如果表单有太多需要同时显示的字段,可以将它们排列在不同的页面中,放置在选项卡式小部件的每个选项卡下。提供了一个标签栏和一个页面区域。显示第一个选项卡下的页面,隐藏其他页面。用户可以通过单击所需的选项卡来查看任何页面。
二、学习目标
1.QTabWidget常用方法
2.QTabWidget常用信号
3.QTabWidget组件的应用
三、知识点
1.【QTabWidget常用方法】
方法 | 描述 |
addTab(widget,text) | 将一个控件添加到Tab控件的选项卡中 |
insertTab(index,widget,icon,label) | 将一个Tab控件的选项卡插入到指定的位置 |
removeTab(index) | 根据指定的索引删除Tab控件 |
setCurrentIndex(index) | 设置当前可见的选项卡所在的索引 |
setCurrentWidget(widget) | 设置当前可见的界面 |
setTabText(index,text) | 设置指定索引的选项卡的文本值。如果提供的文本包含“&”字符(“?”),则会自动为其创建快捷方式。 |
setTabEnabled(index,enabled) | 设置指定索引的选项卡是否可用 |
setTabIcon(index,icon) | 设置指定索引的选项卡的图标 |
setTabVisible(index,visible) | 设置指定索引的选项卡是否可见。如果visible为true则可见;否则为false。 |
setTabsClosable(closeable) | 设置是否将关闭按钮自动添加到每个选项卡 |
setTabPosition(position) | 选项卡的位置由值控制 QTabWidget.North:页面上方的 QTabWidget.South:页面下方的 QTabWidget.West:页面左侧的 QTabWidget.East:页面右侧的 |
tabText(index) | 返回页面上位置index处的选项卡的标签文本 |
widget(index) | 返回位于索引位置index的选项卡页;如果索引超出范围,则返回None |
indexOf(widget) | 返回指定选项卡组件的索引值 |
currentIndex() | 返回当前显示的选项卡的索引值 |
currentWidget() | 返回当前显示的选项卡的组件 |
count() | 返回选项卡的数量 |
isTabEnabled(index) | 如果启用了位置索引页面,则返回true;否则,返回true。否则返回false |
isTabVisible(index) | 如果位置索引处的页面可见,则返回true;否则返回true。否则返回false |
clear() | 清除所有页面 |
2.【QTabWidget常用信号】
信号 | 描述 |
currentChanged(index) | 每当当前页面索引发生变化时,触发信号 |
tabBarClicked(index) | 单击选项卡栏时,触发信号 |
tabBarDoubleClicked(index) | 双击选项卡栏时,触发信号 |
tabCloseRequested(index) | 单击选项卡上的关闭按钮时,触发信号 |
3.【QTabWidget组件的应用】
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTabWidget, QFormLayout, QLineEdit
class QmyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类的构造函数,创建QWidget窗体
self.setupUi()
def setupUi(self):
"""页面初始化"""
# 设置窗体大小及标题
self.resize(500, 400)
self.setWindowTitle("QTabWidget组件示例")
# 创建布局
self.main_layout = QVBoxLayout()
# QTabWidget组件定义
self.tabWidget = QTabWidget() # 定义选项卡组件
self.tab1 = QWidget() # 定义tab页1
self.setupTab1() # 初始化新构造的tab1
self.tab2 = QWidget() # 定义tab页2
self.tab3 = QWidget() # 定义tab页3
# QTabWidget组件设置
self.tabWidget.addTab(self.tab1, "Tab 1") # 将tab1添加到选项卡组件
self.tabWidget.addTab(self.tab2, "Tab 2") # 将tab2添加到选项卡组件
self.tabWidget.addTab(self.tab3, "Tab 3") # 将tab3添加到选项卡组件
self.tabWidget.setTabsClosable(True) # 给每个选项卡设置关闭按钮
self.tabWidget.setTabPosition(QTabWidget.East) # 设置选项卡的位置
self.tabWidget.setCurrentIndex(1) # 设置当前默认显示的tab页
# QTabWidget绑定信号
self.tabWidget.currentChanged.connect(self.on_tabWidget_currentChanged)
# 将组件添加到布局中
self.main_layout.addWidget(self.tabWidget)
# 为窗体添加布局
self.setLayout(self.main_layout)
def setupTab1(self):
"""tab1页面初始化"""
self.layout = QFormLayout()
# 2.设置表单格式
self.layout.setLabelAlignment(Qt.AlignLeft)
self.layout.setFormAlignment(Qt.AlignRight)
# 3.创建输入组件
name_edit = QLineEdit()
mail_edit = QLineEdit()
# 4.为表单添加行
self.layout.addRow("Name:", name_edit)
self.layout.addRow("Mail:", mail_edit)
# 5.为窗体设置表单布局
self.tab1.setLayout(self.layout)
def on_tabWidget_currentChanged(self, index):
"""选项卡切换槽函数"""
print("选项卡当前切换为:{}".format(str(index)))
if __name__ == '__main__':
app = QApplication(sys.argv)
myMain = QmyWidget()
myMain.show()
sys.exit(app.exec_())