6

たとえば、3 列と 2 行の PyQt QTableWidget があります。列ヘッダーには、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 のセル値を取得するにはどうすればよいですか?

4

2 に答える 2

17

これを行うと、「ローカル変数 'matchcol' が代入前に参照されました」

if ループ内でセルを返す必要があることを修正するには、次のようにします。

#===================================================================
# 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(headercount):
        headertext = widget.horizontalHeaderItem(x).text()
        if columnname == headertext:
            cell = widget.item(row, x).text()  # get cell at row, col
            return cell
于 2013-05-06T13:32:20.553 に答える