6

在庫管理プログラムを作成していますが、選択したセルの値を取得する際に問題が発生しました。アイテムの位置を取得するには、「QtGui.QTableWidget.currentRow」と「QtGui.QTableWidget.currentColumn」を使用する必要があります。ただし、関数が呼び出されたときに何も選択されていないため、これを機能させることができないようです。そのため、-1、-1が返されます。

ユーザーがセルを選択するたびに「QtGui.QTableWidget.currentRow」と「QtGui.QTableWidget.currentColumn」を実行するように取得する方法を知っている人はいますか?

座標を取得したら実際のデータを取得するために必要なコードはQtGui.QTableWidget.itemだと思いますか?

これは、行と列を取得するために使用しているコードです。

row = self.table.currentRow
column = self.table.currentColumn
self.ID = self.table.item(row, column)

ユーザーがボタンをクリックして在庫を追加すると、プログラムは製品コードを使用する必要があります。ユーザーから追加された数量を取得した後、データベースに変更を加える必要があります。

私はpython3.2とpyqt4を使用しています

助けていただければ幸いです

ありがとうございました

サム

4

2 に答える 2

23

QTableWidget誰かがそのセルの 1 つをクリックしたことがわかると、接続する必要があるイベントcellClickedが発行されます。多分何かのような

self.table.cellClicked.connect(self.cell_was_clicked)

セットアップコードにある可能性があり、関数cell_was_clickedは次のようなものかもしれません

def cell_was_clicked(self, row, column):
    print("Row %d and Column %d was clicked" % (row, column))
    item = self.table.itemAt(row, column)
    self.ID = item.text()

での返信が必要なため、使用currentRowしていません。この関数はここに文書化されています(申し訳ありませんが、私は pyside を好みます - PyQT とほとんど同じです)。just の代わりにも注意してください- 内容ではなく、セルでアイテムを取得するためです。の機能を使用して内容を取得します。currentColumnclickitemAtitem.text()QTableWidgetItem

注 - これは「スロットとシグナル」、特に「新しいスタイル」を使用しています。PyQT4 と Python 3 を使用しているので、「新しいもの」に問題はないはずです :-)

スロットとシグナルのチュートリアルを参照することを検討してください。これにより、これらの抽象的な概念のいくつかが整理される可能性があります。幸運を!

于 2013-01-29T17:58:18.940 に答える