Изучаю PyQT5 (к сожалению не найти учебника, поэтому мучаюсь с сухим мануалом с малым количеством примеров).
Создаю QTableView заполненную случайными данными, и тут же пытаюсь вывести print в консоль индекс ячейки которая содержит "7".
Как я только не боролся, ничего не выходит.
Выводится такое: [].
А как преобразовать в индекс ячейки никак не могу понять.
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import random
class Splash(QWidget):
def __init__(self):
super().__init__()
self.table = QTableView(self)
self.table.setMinimumWidth(302)
self.table.setGeometry(0, 0, 575, 575)
self.model = QStandardItemModel(self)
self.table.setModel(self.model)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.populate()
self.table.doubleClicked.connect(self.on_click)
def on_click(self, signal):
row = signal.row()
column = signal.column()
cell_dict = self.model.itemData(signal) # RETURNS DICT VALUE OF SIGNAL
cell_value = cell_dict.get(0) # RETRIEVE VALUE FROM DICT
index = signal.sibling(row, 0)
index_dict = self.model.itemData(index)
index_value = index_dict.get(0)
print(
'Row {}, Column {} clicked - value: {}\nColumn 1 contents: {}'.format(row, column, cell_value, index_value))
def populate(self):
values = []
for i in range(10):
sub_values = []
for i in range(4):
value = random.randrange(1, 10)
sub_values.append(value)
values.append(sub_values)
for value in values:
row = []
for item in value:
cell = QStandardItem(str(item))
row.append(cell)
self.model.appendRow(row)
self.show()
print(self.model.findItems('7')) #ВОТ ТУТ ПЫТАЮСЬ ВЫВЕСТИ ПРИНТ.
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = Splash()
sys.exit(app.exec_())