Форум сайта python.su
mymodel = QtGui.QStandardItemModel() -- #создаём таблицу, присваиваем заголовки столбцам nextHeader=["column1", "column2", "column3"] for n in range(mymodel.columnCount()): mymodel.setHorizontalHeaderItem(n, QtGui.QStandardItem(nextHeader[n])) -- for row in mymodel: print(?????) ---
Отредактировано Pluto (Июль 22, 2014 11:34:49)
Офлайн
На кой эта модель вообще нужна, если к полям нельзя обратиться по имени столбца?
Офлайн
Послал в баню эту модель и засунул свои данные в словарь словарей.
Вот только если мне понадобится отобразить эти данные в виде, то словарь словарей подсунуть ему в качестве модели данных не выйдет.
Но, всё-таки, хотелось бы знать: есть ли вообще возможность получить данные из строки модели по имени заголовка???
Офлайн
Полный код пришли.
Офлайн
from PyQt4 import QtGui table = QtGui.QStandardItemModel() headers = ["col1", "col2", "col3"] n=0 for header in headers: table.insertColumn(n) table.setHorizontalHeaderItem(n, QtGui.QStandardItem(header)) n+=1 table.insertRow(0) table.insertRow(1) #Заполняем for rowN in range(table.rowCount()): for colN in range(table.columnCount()): iitem = QtGui.QStandardItem("value " + str(rowN)+ " " + str(colN)) table.setItem(rowN, colN, iitem) #Читаем for rowN in range(table.rowCount()): for colN in range(table.columnCount()): print (rowN, colN, "=", table.item(rowN, colN).text()) #Чего хотим? #Получить значение из ячейки таблицы по наименованию столбца (header) и номеру строки #Что-то типа print(table.item(rowN, определитьИндексСтолбцаПоЗаголовку("Col2")).text())
Офлайн
#!/usr/bin/env python3 from PyQt4 import QtGui, QtCore table = QtGui.QStandardItemModel() headers = ["col1", "col2", "col3"] n = 0 for header in headers: table.insertColumn(n) table.setHorizontalHeaderItem(n, QtGui.QStandardItem(header)) n += 1 table.insertRow(0) table.insertRow(1) #Заполняем for rowN in range(table.rowCount()): for colN in range(table.columnCount()): iitem = QtGui.QStandardItem("value " + str(rowN)+ " " + str(colN)) table.setItem(rowN, colN, iitem) #Читаем for rowN in range(table.rowCount()): for colN in range(table.columnCount()): print(rowN, colN, "=", table.item(rowN, colN).text()) #Чего хотим? #Получить значение из ячейки таблицы по наименованию столбца (header) и номеру строки #Что-то типа print(table.item(rowN, определитьИндексСтолбцаПоЗаголовку("Col2")).text()) col = 'Col2' for rowN in range(table.rowCount()): for colN in range(table.columnCount()): colhdr = table.headerData(colN, QtCore.Qt.Horizontal) if colhdr == col.lower(): print(colhdr, rowN, colN, "=", table.item(rowN, colN).text())
[guest@localhost py]$ ./qtmodel.py
0 0 = value 0 0
0 1 = value 0 1
0 2 = value 0 2
1 0 = value 1 0
1 1 = value 1 1
1 2 = value 1 2
col2 0 1 = value 0 1
col2 1 1 = value 1 1
[guest@localhost py]$
Офлайн
А можно ещё сделать словарь из имён заголовков и индексов ихних, типа:
[code python]
n = 0
for i in table.headerData: #или как там их откопать ещё можно? Щаз питона нет под рукой.
headerdict[i]=n
n+=1
table.item(1, headerdict["col2"]).text()
[/code]
Офлайн