大家好。 我正在尝试使用字典列表中的值填充QTableWidget。 但是在表中仅显示最后一个字典中的值。 看起来像先前的值在每个循环上都被重写。 如何使它正确?请帮忙!
spisok = [{'some': 'any 1',
'some2': 'any 2',
'some3': 'any 3'},
{'some': 'any 1a',
'some2': 'any 2a',
'some3': 'any 3a'},
{'some': 'any 1b',
'some2': 'any 2b',
'some3': 'any 3b'}
]
for item_list in spisok:
for col, key in enumerate(item_list):
for row, value in enumerate(item_list):
newitem = QTableWidgetItem(value)
table.setItem(row, col, newitem)
答案 0 :(得分:0)
row_count = (len(spisok))
column_count = (len(spisok[0]))
table.setColumnCount(column_count)
table.setRowCount(row_count)
table.setHorizontalHeaderLabels((list(spisok[0].keys())))
for row in range(row_count): # add items from array to QTableWidget
for column in range(column_count):
item = (list(spisok[row].values())[column])
table.setItem(row, column, QTableWidgetItem(item))
结果:
示例:
spisok = [{'some': 'any 1',
'some2': 'any 2',
'some3': 'any 3'},
{'some': 'any 1a',
'some2': 'any 2a',
'some3': 'any 3a'},
{'some': 'any 1b',
'some2': 'any 2b',
'some3': 'any 3b'},
{'some': 'any 1c',
'some2': 'any 2c',
'some3': 'any 3c'},
{'some': 'any 1d',
'some2': 'any 2d',
'some3': 'any 3d'}
]
结果:
答案 1 :(得分:0)
尝试一下:
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class TableWidget(QWidget):
def __init__(self):
super().__init__()
spisok = [{'some': 'any 1', 'some2': 'any 2', 'some3': 'any 3'},
{'some': 'any 1a', 'some2': 'any 2a', 'some3': 'any 3a'},
{'some': 'any 1b', 'some2': 'any 2b', 'some3': 'any 3b'}
]
table = QTableWidget()
table.setRowCount(3)
table.setColumnCount(3)
vbox = QVBoxLayout(self)
vbox.addWidget(table)
for row, item_list in enumerate(spisok):
for col, key in enumerate(item_list):
newitem = QTableWidgetItem(item_list[key])
table.setItem(row, col, newitem)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = TableWidget()
w.show()
sys.exit(app.exec_())