59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
![]() |
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_())
|