专业的编程技术博客社区

网站首页 > 博客文章 正文

8.1 PyQt5容器介绍【选项卡控件】-QTabWidget

baijin 2025-01-23 15:06:10 博客文章 12 ℃ 0 评论

1. QTabWidget简介

PyQt5中QTabWidget控件用于创建带有标签页的窗口。允许组织多个窗口小部件在一个单一的容器中,每个窗口小部件都有一个对应的标签页

2. QTabWidget案例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QMainWindow, QTabWidget, QFormLayout, QLineEdit, QRadioButton

from PyQt5 import QtWidgets

"""
    标签页控件
"""


class QTabWidgetDemo(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('标签页控件')
        self.resize(600, 400)

        # 创建标签对象
        self.tab = QTabWidget(self)
        self.tab.resize(600, 400)
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tab3 = QWidget()

        # 添加选项卡页
        self.tab.addTab(self.tab1, 'tab1')
        self.tab.addTab(self.tab2, 'tab2')
        self.tab.addTab(self.tab3, 'tab3')

        # 移除指定索引的标签页
        # self.tab.removeTab(1)

        # 获取标签页数量
        print(self.tab.count())

        # 设置当前活动的标签页
        self.tab.setCurrentIndex(1)

        # 获取当前活动标签页的索引
        print(self.tab.currentIndex())

        # 当前活动的标签页发生改变时触发
        self.tab.currentChanged.connect(self.current_changed)

        # 双击某个标签页时触发
        self.tab.tabBarDoubleClicked.connect(self.tab_bar_double_clicked)

        # 单击某个标签页时触发
        self.tab.tabBarClicked.connect(self.tab_bar_clicked)

        self.tab1_ui()
        self.tab2_ui()
        self.tab3_ui()

    def current_changed(self, index):
        print('当前激活标签页索引:', index)

    def tab_bar_double_clicked(self, index):
        print('双击标签页索引:', index)

    def tab_bar_clicked(self, index):
        print('单击标签页索引:', index)

    # 初始化选项卡页内容
    def tab1_ui(self):
        f_layout = QFormLayout()
        f_layout.addRow('姓名', QLineEdit())
        f_layout.addRow('地址', QLineEdit())
        self.tab.setTabText(0, '联系方式')
        self.tab1.setLayout(f_layout)
    def tab2_ui(self):
        f_layout = QFormLayout()
        h_layout = QHBoxLayout()
        h_layout.addWidget(QRadioButton('男'))
        h_layout.addWidget(QRadioButton('女'))
        f_layout.addRow('性别', h_layout)
        f_layout.addRow('生日', QLineEdit())
        self.tab.setTabText(1, '详细信息')
        self.tab2.setLayout(f_layout)

    def tab3_ui(self):
        h_layout = QHBoxLayout()
        h_layout.addWidget(QtWidgets.QLabel('学科'))
        h_layout.addWidget(QtWidgets.QCheckBox('数学'))
        h_layout.addWidget(QtWidgets.QCheckBox('语文'))
        self.tab.setTabText(2, '学科')
        self.tab3.setLayout(h_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QTabWidgetDemo()
    w.show()
    app.exec()

3. 运行结果

4. 常用方法

方法

描述

addTab(QWidget, str)

添加新的标签页

insertTab(int, QWidget, str)

在指定索引处插入一个新标签页

removeTab(int)

移除指定索引的标签页

count()

获取标签页的数量

currentIndex()

获取当前活动标签页的索引

setCurrentIndex(int)

设置当前活动的标签页

tabText(int)

获取指定索引的标签页的文本

setTabText(int, str)

设置指定索引的标签页的文本

5. 常用信号

方法

描述

currentChanged

当前活动的标签页发生改变时触发

tabBarDoubleClicked

双击某个标签页时触发

tabBarClicked

单击某个标签页时触发

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表