Заполнить QTableView данными через одну строку
Необходимо заполнить таблицу значениями из списка, через оду строку.
Я использовал для этого:
d_md = [(x, x) for i, x in enumerate(c)] # (создавая дубликаты значений списка)
Затем заполняю каждую вторую строку в таблице:
for row in range(0, len(z), 2)
Есть более короткий вариант, решения вопроса?
Минимальный пример:
from PyQt5 import QtWidgets, QtGui, QtCore
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Класс QTableView")
window.resize(500, 400)
view = QtWidgets.QTableView()
model = QtGui.QStandardItemModel(20, 10)
view.setModel(model)
c = [0, 1, 2, 3, 8, 9, 10]
d_md = [(x, x) for i, x in enumerate(c)] # вставка дубликатов в список
z = []
for i in d_md:
for j in i:
z.append(j)
print(z) # [0, 0, 1, 1, 2, 2, 3, 3, 8, 8, 9, 9, 10, 10]
for row in range(0, len(z), 2):
for col in range(1, 2):
item = QtGui.QStandardItem(str(z[row]))
model.setItem(row, col, item)
box = QtWidgets.QVBoxLayout()
box.addWidget(view)
window.setLayout(box)
window.show()
sys.exit(app.exec_())'
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я не знаю зачем вам это надо, но предложу попробовать так:
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
class Window(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.view = QtWidgets.QTableView(self)
self.model = QtGui.QStandardItemModel(0, 10)
self.view.setModel(self.model)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.view)
c = [0, 1, 2, 3, 8, 9, 10]
for row in range(len(c)):
self.model.appendRow([
QtGui.QStandardItem(""),
QtGui.QStandardItem(f"{c[row]}")
])
self.model.appendRow(QtGui.QStandardItem(""))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Window()
w.setWindowTitle("Класс QTableView")
w.resize(500, 400)
w.show()
sys.exit(app.exec_())
