标题:求助多层表头锁定任意列的事例
只看楼主
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
结帖率:87.5%
已结贴  问题点数:20 回复次数:1 
求助多层表头锁定任意列的事例
求助多层表头锁定任意列的事例,能否赐一份,谢谢!
搜索更多相关主题的帖子: 锁定 表头 多层 任意 
2023-04-11 20:10
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:20 
在PyQt5中,可以使用QTableWidget来创建表格控件。如果需要实现多层表头并锁定任意列,可以使用QHeaderView来实现。

以下是一个示例代码,可以实现多层表头并锁定第一列:

程序代码:
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QHeaderView
from PyQt5.QtCore import Qt

class MyTableWidget(QTableWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setColumnCount(5)
        self.setRowCount(4)
        self.setHorizontalHeaderLabels(['', 'A', 'B', 'C', 'D'])

        # 设置表头
        self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.verticalHeader().setVisible(False)
        self.horizontalHeader().setSectionsClickable(False)
        self.horizontalHeader().setFixedHeight(60)
        self.horizontalHeader().setFixedWidth(600)

        # 设置第一列的宽度和锁定
        self.setColumnWidth(0, 100)
        self.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed)
        self.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)

        # 设置第一行和第二行表头
        self.setSpan(0, 1, 1, 2)
        self.setSpan(1, 1, 1, 2)
        self.setItem(0, 0, QTableWidgetItem(''))
        self.setItem(1, 0, QTableWidgetItem(''))
        self.setItem(0, 1, QTableWidgetItem('Group 1'))
        self.setItem(1, 1, QTableWidgetItem('A'))
        self.setItem(1, 2, QTableWidgetItem('B'))
        self.setItem(0, 3, QTableWidgetItem('Group 2'))
        self.setItem(1, 3, QTableWidgetItem('C'))
        self.setItem(1, 4, QTableWidgetItem('D'))

        # 设置单元格内容
        self.setItem(2, 0, QTableWidgetItem('1'))
        self.setItem(2, 1, QTableWidgetItem('1'))
        self.setItem(2, 2, QTableWidgetItem('2'))
        self.setItem(2, 3, QTableWidgetItem('3'))
        self.setItem(2, 4, QTableWidgetItem('4'))
        self.setItem(3, 0, QTableWidgetItem('2'))
        self.setItem(3, 1, QTableWidgetItem('5'))
        self.setItem(3, 2, QTableWidgetItem('6'))
        self.setItem(3, 3, QTableWidgetItem('7'))
        self.setItem(3, 4, QTableWidgetItem('8'))

        # 设置锁定列的背景色
        for i in range(self.rowCount()):
            item = self.item(i, 0)
            item.setBackground(Qt.lightGray)
            item.setFlags(Qt.ItemIsEnabled)

if __name__ == '__main__':
    app = QApplication([])
    table = MyTableWidget()
    table.show()
    app.exec_()


在这个示例代码中,我们创建了一个5列4行的表格,第一列是锁定列,其他列是普通列。我们使用"setSpan"函数来设置第一行和第二行的表头,锁定第一列的宽度和位置,以及设置单元格内容。最后,我们使用"setBackground"函数来设置锁定列的背景色。

运行代码后,可以看到一个多层表头并锁定第一列的表格。你可以根据自己的需要修改代码来实现锁定任意列的效果。

会当凌绝顶,一览众山小.
2023-04-12 18:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511876-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050026 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved