QtabWidget是Pyside6中的一个标签页控件,其作用可以是让用户更好划分不同的页面设计功能,将跟功能实现相关的控件都放到同一个标签页中,可以让界面更加简洁美观。更多关于QtabWidget的资料可以参考下面的文档。

https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QTabWidget.html

QtabWidget使用

QtabWidget常用方法

设置标签页的标题

程序设置

self.ui.tabWidget.setTabText(1,"标签1") # 设置索引为1的标签标题文本

界面设置

点击需要设置标题的标签页
Pyside6 QtabWidget-LMLPHP
点击控件->属性编辑器->currentTabText设置标签页的标题
Pyside6 QtabWidget-LMLPHP

设置当前显示的标签页

程序设置

self.ui.tabWidget.setCurrentIndex(1)   # 将当前选项卡设置为索引为1的标签

界面设置

直接点击需要显示的标签页的标签即可
Pyside6 QtabWidget-LMLPHP

删除标签页

程序设置

self.ui.tabWidget.removeTab(self.ui.tabWidget.currentIndex())

界面设置

鼠标移动到需要删除的标签页上,点击右键按下图步骤删除即可。
Pyside6 QtabWidget-LMLPHP

添加标签页

程序设置

self.ui.tabWidget.addTab(self.tab, "Tab " + str(self.ui.tabWidget.count()))

界面设置

鼠标移动到标签页,点击右键按照下图方式添加标签页
Pyside6 QtabWidget-LMLPHP

例程

界面程序

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>567</width>
    <height>432</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <widget class="QTabWidget" name="tabWidget">
        <property name="currentIndex">
         <number>0</number>
        </property>
        <widget class="QWidget" name="tab">
         <attribute name="title">
          <string>Tab 1</string>
         </attribute>
         <widget class="QLabel" name="label">
          <property name="geometry">
           <rect>
            <x>60</x>
            <y>50</y>
            <width>391</width>
            <height>171</height>
           </rect>
          </property>
          <property name="font">
           <font>
            <pointsize>25</pointsize>
           </font>
          </property>
          <property name="text">
           <string>标签页1</string>
          </property>
         </widget>
        </widget>
        <widget class="QWidget" name="tab_2">
         <attribute name="title">
          <string>Tab 2</string>
         </attribute>
         <widget class="QLabel" name="label_2">
          <property name="geometry">
           <rect>
            <x>30</x>
            <y>50</y>
            <width>421</width>
            <height>181</height>
           </rect>
          </property>
          <property name="font">
           <font>
            <pointsize>25</pointsize>
           </font>
          </property>
          <property name="text">
           <string>标签页2</string>
          </property>
         </widget>
        </widget>
        <widget class="QWidget" name="tab_3">
         <attribute name="title">
          <string>Tab 3</string>
         </attribute>
         <widget class="QLabel" name="label_3">
          <property name="geometry">
           <rect>
            <x>60</x>
            <y>70</y>
            <width>431</width>
            <height>131</height>
           </rect>
          </property>
          <property name="font">
           <font>
            <pointsize>25</pointsize>
           </font>
          </property>
          <property name="text">
           <string>标签页3</string>
          </property>
         </widget>
        </widget>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QPushButton" name="delete_tab_btn">
        <property name="maximumSize">
         <size>
          <width>200</width>
          <height>16777215</height>
         </size>
        </property>
        <property name="text">
         <string>删除页</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="add_tab_btn">
        <property name="maximumSize">
         <size>
          <width>200</width>
          <height>16777215</height>
         </size>
        </property>
        <property name="text">
         <string>添加页</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>567</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>


主程序

# Import Qt libraries
from PySide6.QtWidgets import *
from PySide6.QtCore import QFile,QRect
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
# Import UI developed in Qt Creator
from TabWidget_ui import Ui_MainWindow  # 导入界面
# Import PseudoSensor
# Import system tools and datetime
import sys
import statistics
import time
from datetime import datetime
import random
# Create and start the Qt application
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        
        # 设置界面为用户设计的界面
        self.ui = Ui_MainWindow() 
        self.ui.setupUi(self) 
       
        self.ui.tabWidget.currentChanged.connect(self.tabWidgetcurrentChanged)

        self.ui.delete_tab_btn.clicked.connect(self.deletetab)
        self.ui.add_tab_btn.clicked.connect(self.addtab)

        self.ui.tabWidget.setTabText(1,"标签1") # 设置索引为1的标签标题文本
        self.ui.tabWidget.setCurrentIndex(1)   # 将当前选项卡设置为索引为1的标签



    def tabWidgetcurrentChanged(self,index):
        print("current tab index %d" % index) # 打印出选中的标签索引

    def deletetab(self): # 删除标签页
        self.ui.tabWidget.removeTab(self.ui.tabWidget.currentIndex())

    def addtab(self):    # 增加标签页
        self.tab = QWidget()
        self.tab.setObjectName("tab")
   
        # 创建标签
        font = QFont()
        font.setPointSize(25)
        self.label = QLabel(self.tab)
        self.label.setObjectName("label")
        self.label.setGeometry(QRect(30, 50, 421, 181))
        self.label.setFont(font)
        self.label.setText(str(random.uniform(1, 9999999))) # 标签内容设置为随机数

        self.ui.tabWidget.addTab(self.tab, "Tab " + str(self.ui.tabWidget.count()))
    def closeAndExit(self):
        sys.exit()

if __name__ == "__main__":
    app = QApplication(sys.argv) # 初始化QApplication

    # 初始化界面并显示界面
    window = MainWindow() 
    window.show() 

    sys.exit(app.exec())

Pyside6 QtabWidget-LMLPHP

10-12 18:13