用户在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}
似乎我必须使用QTableWidgetItem http://doc.qt.nokia.com/4.7-snapshot/qtablewidget.html#item
创建一个新项目Python begginer,一些建议将不胜感激。
答案 0 :(得分:1)
itemAt
返回给定位置的项目,但不是row/column
。它是坐标(将其视为像素)。
是的,您应该使用item
代替itemAt
。
如果您要将其转换为浮动,则不需要str
。 float()
QString
可以使用str
,就好像它是.update
一样。而且,您可以将新值分配给密钥,而不是FirstRowDict[i] = float(tablewidget.item(0, j).text())
。
{{1}}