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