2012-09-16 69 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

相關問題