For example, I have a PyQt QTableWidget which has 3 columns and 2 rows. The column headers are labeled A, B, and C.
A B C
1 2 3
4 5 6
This is the excerpt from my current source:
class myform(QtGui.QMainWindow):
def __init__(self, parent=None):
super(myform, self).__init__(parent)
self.ui = Ui_mygui()
self.ui.setupUi(self)
self.ui.mytablewidget.cellClicked.connect(self.cell_was_clicked)
@QtCore.pyqtSlot() # prevents executing following function twice
def cell_was_clicked(self):
row = self.ui.mytablewidget.currentItem().row()
print "row=",row
col = self.ui.mytablewidget.currentItem().column()
print "col=",col
item = self.ui.mytablewidget.horizontalHeaderItem(col).text()
print "item=",item
My code works and when I select a row in my table.. I get the correct row and col numbers from the selection.
What is the code needed to return a cell value for the selected row given a specified header name? If I select row 2 cell 1 ... how can I get the cell value of column C on the same row?
If you do that you got: "local variable 'matchcol' referenced before assignment"
To fix that you should return the cell inside if loop:
#===================================================================
# given a tablewidget which has a selected row...
# return the column value in the same row which corresponds to a given column name
# fyi: columnname is case sensitive
#===================================================================
def getsamerowcell(widget,columnname):
row = widget.currentItem().row()
#col = widget.currentItem().column()
#loop through headers and find column number for given column name
headercount = widget.columnCount()
for x in range(0,headercount,1):
headertext = widget.horizontalHeaderItem(x).text()
if columnname == headertext:
cell = widget.item(row, x).text() # get cell at row, col
return cell