标签页控件QTabWidget

97 阅读1分钟

QTabWidget用来分页显示内容,它上面有一些标签。用户每单击一个标签就能够显示一个选项卡,这样多个选项卡就可以共享一块区域,可以节省很多空间。

image.png

from PyQt6.QtWidgets import (QApplication, QWidget, QTableWidget,
                             QScrollArea, QLabel, QVBoxLayout)
from PyQt6.QtGui import QPixmap
from PyQt6.QtCore import Qt
import sys


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.ui()

    def ui(self):
        self.setWindowTitle("QTableWidget学习")
        self.resize(400, 300)

        # 创建主布局
        layout = QVBoxLayout(self)

        # 创建表格
        self.table = QTableWidget(1, 3)  # 3行3列
        self.table.setShowGrid(True)  # 显示网格线
        self.table.setGridStyle(Qt.PenStyle.DotLine)  # 虚线网格
        self.table.setAlternatingRowColors(True)  # 交替行颜色
        self.table.setSortingEnabled(True)
        self.table.setHorizontalHeaderLabels(["美女1", "美女2", "美女3"])  # 设置表头
        self.table.setStyleSheet("""
            QTableWidget {
                background: transparent;
                border: none;
            }
            QHeaderView::section {
                background-color: #3498db;
                color: white;
                padding: 5px;
            }
        """)
        layout.addWidget(self.table)

        # 准备要插入的滚动区域和标签
        scroll_area = QScrollArea()
        scroll_area2 = QScrollArea()
        scroll_area3 = QScrollArea()
        label = QLabel()
        label.setPixmap(
            QPixmap("/Users/wangjien/PycharmProjects/pythonGit/PyQt6学习/2_书籍学习/2_2_控件/Qsplitter_test/mei1.jpeg"))
        label2 = QLabel()

        label2.setPixmap(
            QPixmap("/Users/wangjien/PycharmProjects/pythonGit/PyQt6学习/2_书籍学习/2_2_控件/Qsplitter_test/mei2.jpeg"))

        label3 = QLabel()
        label3.setPixmap(
            QPixmap("/Users/wangjien/PycharmProjects/pythonGit/PyQt6学习/2_书籍学习/2_2_控件/Qsplitter_test/mei3.jpg"))

        # 设置滚动区域属性
        scroll_area.setWidgetResizable(True)
        scroll_area.setWidget(label)

        scroll_area2.setWidgetResizable(True)
        scroll_area2.setWidget(label2)

        scroll_area3.setWidgetResizable(True)
        scroll_area3.setWidget(label3)

        # 将滚动区域放入表格单元格
        self.table.setCellWidget(0, 0, scroll_area)
        self.table.setCellWidget(0, 1, scroll_area2)
        self.table.setCellWidget(0, 2, scroll_area3)

        # 调整表格行高列宽以适应图片
        self.table.setRowHeight(0, 400)
        self.table.setColumnWidth(0, 400)

        self.table.setRowHeight(0, 400)
        self.table.setColumnWidth(1, 400)

        self.table.setRowHeight(0, 400)
        self.table.setColumnWidth(2, 400)

        self.resize(600, 400)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    sys.exit(app.exec())