0

I am trying to trigger the action when cell selection of QTableView. I am using the selectionChanged but it triggers the action only for the first time and changing the cell selection is not triggering the action again. What is that I am doing wrong.

import sys from PySide6 import QtCore, QtGui, QtWidgets from PySide6.QtCore import Qt import pandas as pd class TableModel(QtCore.QAbstractTableModel): def __init__(self, data): super(TableModel, self).__init__() self._data = data def data(self, index, role): if role == Qt.DisplayRole: value = self._data.iloc[index.row(), index.column()] return str(value) def rowCount(self, index): return self._data.shape[0] def columnCount(self, index): return self._data.shape[1] def headerData(self, section, orientation, role): # section is the index of the column/row. if role == Qt.DisplayRole: if orientation == Qt.Horizontal: return str(self._data.columns[section]) if orientation == Qt.Vertical: return str(self._data.index[section]) class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.table = QtWidgets.QTableView() data = pd.DataFrame([ [1, 9, 2], [1, 0, -1], [3, 5, 2], [3, 3, 2], [5, 8, 9], ], columns = ['A', 'B', 'C'], index=['Row 1', 'Row 2', 'Row 3', 'Row 4', 'Row 5']) self.model = TableModel(data) self.table.setModel(self.model) selectionModel = self.table.selectionModel() selectionModel.selectionChanged.connect(self.printLocation()) self.setCentralWidget(self.table) def printLocation(self): print(self.table.currentIndex()) app=QtWidgets.QApplication(sys.argv) window=MainWindow() window.show() app.exec_() 
2
  • 1
    change to electionModel.selectionChanged.connect(self.printLocation) Commented May 9, 2021 at 18:27
  • OMG! What a stupid mistake. Thanks. Commented May 9, 2021 at 18:30

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.