Форум сайта python.su
Добрый вечер всем.
Возникла такая проблема: есть таблица в которую вносятся данные из БД. Нужно что бы при нажатии на строку, переменной присваивалось значение первого столбца, выделенной строки. Пока глухо.
Научился выводить значение выделенной ячейки, номер строки и столбца, дальше застрял
table.doubleClicked.connect(self.on_click) def on_click(self, index): print index.row(), index.column(), index.data().toString()
def data(self, index, role): if not index.isValid(): return QVariant() elif role != Qt.DisplayRole: return QVariant() return decode_r[index.row()][index.column()]
Отредактировано Cheryrg (Янв. 11, 2015 18:58:53)
Офлайн
newIndex = table.model().index(index.row(), 0)
Офлайн
Про QTableView надо в раздел GUI писать.
> Как то так
Зачем ты новый индекс получаешь? Получай сразу данные.
> PS/ Предвкушаю дальнейшие проблемы, почему в таблицу не выводится поля с датой из БД (mysql)?
elif role != Qt.DisplayRole: return QVariant()
Офлайн
Заношу данные в переменную, по которой дальше открываю строку в новом окне.
elif role != Qt.DisplayRole: return QVariant()
Офлайн
> Не совсем понял. У меня вроде все так же.
Это нужно удалить. Проверяй модель, там наверняка ошибка из-за которой дата не выводится.
Офлайн
Удаляю и в таблицу (в каждую ячейку вставляются чек боксы. ) Модель уже вдоль и поперек проверил, там и ошибаться то негде толком.
class MyTableModel(QtCore.QAbstractTableModel): def __init__(self, HeaderS, parent=None): super(MyTableModel, self).__init__() self.HeaderS = HeaderS self.decode_r = decode_r def rowCount(self, parent): return connection.affected_rows() # Возвращает число строк от последнего запроса def columnCount(self, parent): return 3 #___________________________________________________ def data(self, index, role): if not index.isValid(): return QVariant() elif role != Qt.DisplayRole: return QVariant() return self.decode_r[index.row()][index.column()]
Офлайн
Я так понял проблема в том что запрос из БД возвращает datetime.date( ).
Офлайн