从qtablewidget中的选定单元格中检索单元格数据

时间:2013-01-29 17:18:02

标签: python pyqt4 qtablewidget

我正在制作一个库存控制程序,我遇到了获取所选单元格值的问题,我知道我需要使用“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)

当用户点击按钮添加库存时,程序应该使用产品代码,在获得用户添加的数量后,它将刚刚对数据库进行更改

我正在使用python 3.2和pyqt 4

任何帮助将不胜感激

谢谢

萨姆

1 个答案:

答案 0 :(得分:14)

QTableWidget看到有人点击其中一个单元格时,它会发出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()

我没有使用currentRowcurrentColumn,因为您希望在click上进行回复。这个函数记录在here(对不起,我更喜欢pyside - 它与PyQT几乎相同)。另请注意itemAt而不只是item - 因为您将获取单元格中的项目,而不是它的内容。使用.text() QTableWidgetItem功能获取内容。

注意 - 这是使用'插槽和信号',特别是'新风格'。当你使用PyQT4和Python 3时,你应该对“新东西”没有任何麻烦: - )

你可能会考虑浏览一个位置和信号tutorial - 这可能会使这些抽象概念中的一些变得简单。祝你好运!