2025-03-14 16:15:51 +08:00

59 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout
from PyQt5.QtCore import Qt
class Table(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('QTableWidget with CheckBoxes')
self.resize(600, 300)
# 创建表格
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(4)
self.tableWidget.setColumnCount(5)
# 设置表头
self.tableWidget.setHorizontalHeaderLabels(['选择', '序号', '帧头数据匹配HEX', '字段偏移地址', '字段数据类型'])
# 填充数据,并为每一行的第一列添加复选框
items = [
['1', '01 F4', '5', '双字节有符号整数'],
['2', '01 F4', '7', '双字节有符号整数'],
['3', '00 F4', '0', '双字节有符号整数'],
['4', '00 F4', '8', '双字节有符号整数']
]
for row in range(len(items)):
# 添加复选框到第一列
checkboxItem = QTableWidgetItem()
checkboxItem.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
checkboxItem.setCheckState(Qt.Unchecked) # 或者使用 Qt.Checked 来默认勾选
self.tableWidget.setItem(row, 0, checkboxItem)
# 填充其他列的数据
for col in range(len(items[row])):
item = QTableWidgetItem(items[row][col])
self.tableWidget.setItem(row, col + 1, item) # 注意:从第二列开始填充数据
# 设置表格为只读(除了复选框)
self.tableWidget.setEditTriggers(QTableWidget.NoEditTriggers)
# 设置表格为不可调整大小
self.tableWidget.horizontalHeader().setStretchLastSection(True)
# 创建一个垂直布局并添加表格到布局中
layout = QVBoxLayout()
layout.addWidget(self.tableWidget)
# 设置窗口的布局
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
table = Table()
table.show()
sys.exit(app.exec_())