例如,我有一个PyQt QTableWidget,它有3列和2行。 列标题标记为A,B和C.
A B C
1 2 3
4 5 6
这是我目前来源的摘录:
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
我的代码有效,当我在表格中选择一行时......我从选择中得到正确的行和列号。
在给定指定标题名称的情况下,返回所选行的单元格值所需的代码是什么?如果我选择第2行单元格1 ...如何在同一行上获取C列的单元格值?
答案 0 :(得分:13)
如果你这样做,你得到:“在分配前引用的局部变量'matchcol'”
要解决这个问题,你应该在循环中返回单元格:
#===================================================================
# 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
答案 1 :(得分:2)
获得单元格的行和列后,您可以使用QTableWidget.item获取QTableWidgetItem,您可以从中获取text和/或存储的data。< / p>
因此,在您的广告位中,如果您有行和列,则可以看到此列对应的字母,并从那里确定要从哪个列获取数据。