2012-09-16 37 views
0

用户在QTableWidget中的所有单元格中手动设置值。表中第一行的值表示我们想要存储在字典FirstRowDict中的值。第二行值将被放入SecondRowDict等等。用给定行的所有单元格值填充字典

enter image description here

所以,从表像图中所示之一, 我们要结束了在这个例子与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}

看来,我要创建使用QTableWidgetItemhttp://doc.qt.nokia.com/4.7-snapshot/qtablewidget.html#item

Python的初学者一个新的项目,一些建议,将不胜感激。

+0

作为输出得到什么?顺便说一下,'1st_Row_Dict'在Python中不是一个有效的名字。 – Avaris

+0

这就是我得到的结果:FirstRowDict = {0:10,1:10},SecondRowDict = {0:10,1:10}。我编辑字典名称,因为我只是选取了这些名字作为示例 – CosmoSurreal

回答

1

啊,我看到了混乱。 itemAt返回给定位置处的项目,但它不是row/column。这是坐标(将其视为像素)。

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

如果您打算将其转换为浮点型,则不需要strfloat()将在QString上工作,就好像它是str一样。而不是.update,您可以将新值分配给密钥。

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

完美地作品!你! – CosmoSurreal

相关问题