【问题标题】:get cell value based on header string and selected row根据标题字符串和选定行获取单元格值
【发布时间】:2013-04-28 08:09:27
【问题描述】:

例如,我有一个 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 列的单元格值?

【问题讨论】:

    标签: python pyqt qtablewidget


    【解决方案1】:

    如果你这样做,你会得到:“在赋值之前引用局部变量 '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
    

    【讨论】:

      【解决方案2】:

      获得单元格的行和列后,可以使用QTableWidget.item 获取QTableWidgetItem,从中可以获取text 和/或存储的data

      所以在你的槽中,如果你有行和列,你可以看到这个列对应哪个字母,并从那里确定你想从哪一列获取数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 2018-03-10
        • 1970-01-01
        • 2012-07-28
        • 1970-01-01
        相关资源
        最近更新 更多