Задать вопрос
@Ic2d
Самоучка:)

Как вернуть индекс ячейки в QTableView?

Изучаю 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_())
  • Вопрос задан
  • 1533 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Ic2d Автор вопроса
Самоучка:)
item = self.model.findItems('7')[0]
print(item.row())

Оказалось что возвращается массив. Гугл сбил меня с толку ведь люди писали что возвращает только первый найденный элемент(а мне и нужен первый найденный элемент)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы