pyqt5 TableWidget逐行尾部添加,逐列写入,双for嵌套
绝对原创,拒绝抄袭! 搜索了好多篇博客论坛均无找到此功能,只能靠自己了。
try:
for row_name in glo.dict.keys():
if glo.dict[row_name][0] == False: # 当字典数据为false表示我不需要此项测试,生成tablewidget
continue
if glo.dict[row_name][0] == True: # true ,我需要此项测试,(尾部)生成一行 tablewidget
row_cnt = self.mytableWidget.rowCount() # 返回当前行数(尾部)
self.mytableWidget.insertRow(row_cnt) # 尾部插入一行新行表格
column_cnt = self.mytableWidget.columnCount() # 返回当前列数
self.testitem_count += 1 # 这是添加测试项数量的计数,可忽略
for evercolumn in range(column_cnt):
if evercolumn == 0:
item1 = QTableWidgetItem(str(row_name)) # 列=0时,写入名字(以字典的键值作名)
else:
# 其余分别取 dict[key][0],dict[key][1],dict[key][2] 分别写入 列=1,2,3
item1 = QTableWidgetItem(str(glo.dict[row_name][evercolumn]))
self.mytableWidget.setItem(row_cnt, evercolumn, item1) #最后,将(行,列,内容)配置
self.mytableWidget.resizeColumnsToContents() # 设置列宽高按照内容自适应
#self.mytableWidget.resizeRowsToContents() # 设置行宽和高按照内容自适应
print("Slot Table Widget test setup successfully.")
except:
print("Error for appending table list. ")
1.选择性的判断
首先,glo.dict是我设置的一个全局字典。glo.dict[row_name][0] 存储的是 ture/false,表示改测试是否会加入生成的表格中。
2.如下图,是glo.dict存取到的json字典内容形式。
"_TEST_LED_CONTROLS":[
true,
"1. Test 3 led (ready,error,test). ",
-1,
"false"
],
"_TEST_VOLTAGE_REF_CONTROLS":[
true,
"2. Test voltage ref. ",
-1,
"false"
],
3.实现效果
注意:(1)第一行的Name, Detail 等是在QT designer事先设置好的表头,当然你可不需设置,也能实现。
(2)mytableWidget 对应的是我的tableWidget的对象名,需要改成你自己的。
4.感谢阅读,请评论交流,大家共同进步!