Python 用给定行的所有单元格值填充字典

Python 用给定行的所有单元格值填充字典,python,pyqt4,cell,qtablewidget,Python,Pyqt4,Cell,Qtablewidget,用户在QTableWidget的所有单元格中手动设置值。表的第一行的值表示要存储在字典中的值FirstRowDict。第二行值将被放入SecondRowDict中,依此类推 从图中所示的表格中, 在本例中,我们希望以FirstRowDict={0:10,1:20} 和SecondRowDict={0:30,1:40} 为了实现这一点,我创建了一个按钮,并添加了一个在单击时更新目标词典的操作: def button_click(): for j in range(0,2):

用户在QTableWidget的所有单元格中手动设置值。表的第一行的值表示要存储在字典中的值
FirstRowDict
。第二行值将被放入
SecondRowDict
中,依此类推

从图中所示的表格中, 在本例中,我们希望以
FirstRowDict={0:10,1:20}
SecondRowDict={0:30,1:40}

为了实现这一点,我创建了一个按钮,并添加了一个在单击时更新目标词典的操作:

def button_click():
    for j in range(0,2):
        FirstRowDict.update({i: float(str(tablewidget.itemAt(0,j).text()))})

        #I put "0" in itemAt because first row is zero
        #tablewidget = QTableWidget() declared earlier in the source code

        SecondRowDict.update({i: float(str(tablewidget.itemAt(1,j).text()))})

    print '1st_Row_Dict=%s'%1st_Row_Dict,'\n2nd_Row_Dict=%s'%2nd_Row_Dict
输出不正确,因为字典中填充的是相同的值,而不是每个单元格的唯一值。 我得到
FirstRowDict={0:10,1:10}
SecondRowDict={0:10,1:10}

似乎我必须使用


谢谢你的建议。

啊,我看到了困惑
itemAt
返回给定位置的项,但它不是
行/列
。它是坐标(将其视为像素)

是的,您应该使用
item
而不是
itemAt

如果要将其转换为float,则不需要
str
float()
将在
QString
上工作,就像它是
str
一样。而且,您只需将新值分配给键,而不是
.update

FirstRowDict[i] = float(tablewidget.item(0, j).text())

你的输出是什么?顺便说一句,
1st_Row_Dict
在Python中不是一个有效的名称。这是我得到的:FirstRowDict={0:10,1:10},SecondRowDict={0:10,1:10}。我编辑了字典名称,因为我刚刚为示例选择了这些名称