0

ユーザーが QTableWidget のすべてのセルに手動で値を設定します。テーブルの最初の行の値は、ディクショナリに格納する値を表しますFirstRowDict。2 行目の値が入力さ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初心者の方、アドバイスをいただければ幸いです。

4

1 に答える 1

1

ああ、混乱が見えます。itemAt指定された位置にアイテムを返しますが、そうではありませんrow/column。それは座標です (ピクセルと考えてください)。

はい、item代わりに を使用する必要がありitemAtます。

strfloat に変換する場合は必要ありません。であるかのように でfloat()動作します。また、 の代わりに、新しい値をキーに割り当てることができます。QStringstr.update

FirstRowDict[i] = float(tablewidget.item(0, j).text())
于 2012-09-16T21:40:09.920 に答える