我正在制作一个库存控制程序,我遇到了获取所选单元格值的问题,我知道我需要使用“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
任何帮助将不胜感激
谢谢
萨姆
答案 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()
我没有使用currentRow
和currentColumn
,因为您希望在click
上进行回复。这个函数记录在here(对不起,我更喜欢pyside - 它与PyQT几乎相同)。另请注意itemAt
而不只是item
- 因为您将获取单元格中的项目,而不是它的内容。使用.text()
QTableWidgetItem
功能获取内容。
注意 - 这是使用'插槽和信号',特别是'新风格'。当你使用PyQT4和Python 3时,你应该对“新东西”没有任何麻烦: - )
你可能会考虑浏览一个位置和信号tutorial - 这可能会使这些抽象概念中的一些变得简单。祝你好运!