Pyqt6的tableWidget填充数据

发布于:2025-02-11 ⋅ 阅读:(35) ⋅ 点赞:(0)

代码

from PySide6.QtWidgets import QTableWidget QTableWidgetItem

def tableInit(self):
    self.tableWidget
    self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
    module_keyWord = readJsonToDict(keyWordFileDir + module_name) #读取模块关键字json字典数据
    self.tableWidget.setRowCount(len(module_keyWord.items()) + 1) #用字典长度设置表格行数,+1表上表示除去表头
    self.tableWidget.setColumnCount(3)
    self.tableWidget.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)  # 禁止编辑单元格
    self.tableWidget.setAlternatingRowColors(True)  # 使表格颜色交错显示

  # 设置表头
    item = QTableWidgetItem("选择")
    item.setBackground(QBrush(QColor("cyan"))) #设置单元格背景颜色
    item.setFont
    # item.setTextAlignment(Qt.AlignmentFlag(20))
    self.tableWidget.setItem(0, 0, item)
    item = QTableWidgetItem("log关键字")
    item.setBackground(QBrush(QColor("cyan")))
    self.tableWidget.setItem(0, 1, item)
    item = QTableWidgetItem("描述")
    item.setBackground(QBrush(QColor("cyan")))
    self.tableWidget.setItem(0, 2, item)

# 设置字体(字体,字号,颜色)
        # Item.setFont(QFont('Times', 14, QFont.Black))
        # # 另外一种方法设置颜色(该为红色)
        # Item.setForeground(QBrush(QColor(255, 0, 0)))
        # tableWidget.setItem(0, 0, Item)

  # 填充表格数据
    row = 1
    col = 1
    print('更新表格关键字文件:',keyWordFileDir + module_name)
    for name, score in module_keyWord.items():
      # 创建QCheckBox
      checkBox = QCheckBox()
      # 将QWidget设置为表格的单元格的QWidget
      self.tableWidget.setCellWidget(row, 0, checkBox)
      checkBox.stateChanged.connect(lambda state, row=row: self.on_checkbox_state_changed(row))
      
      item = QTableWidgetItem(name)
      self.tableWidget.setItem(row, col, item)
      item = QTableWidgetItem(score)
      self.tableWidget.setItem(row, col+1, item)
      row += 1
    self.tableWidget.resizeColumnsToContents() #设置列宽跟随内容改变

代码功能解释

这段代码实现了表格的初始化和数据填充。

具体功能如下:

1. **设置表格选择行为**:设置为按行选择。

2. **读取JSON文件**:从指定路径读取模块关键字的JSON文件并转换为字典。

3. **配置表格属性**:设置表格的行数、列数、禁止编辑单元格、使表格颜色交错显示。

4. **设置表头**:创建并设置表头的三个单元格(选择、log关键字、描述),并设置背景颜色。

5. **填充表格数据**:遍历字典,为每一行添加复选框、关键字和描述,并连接复选框的状态变化事件。

控制流图

解释

  • A: 开始执行 tableInit 方法。
  • B: 设置表格的选择行为为按行选择。
  • C: 调用 readJsonToDict 方法读取 JSON 文件并转换为字典。
  • D: 配置表格的基本属性,如行数、列数、编辑权限等。
  • E: 设置表头的三个单元格,并设置背景颜色。
  • F: 初始化行号和列号。
  • G: 判断是否遍历完字典中的所有项。
  • H: 创建复选框并将其添加到表格中。
  • I: 将关键字和描述添加到表格中。
  • J: 增加行号以便处理下一行。
  • K: 当遍历完成后,调整表格的列宽以适应内容。
  • L: 结束 tableInit 方法的执行。