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)

当用户单击按钮添加库存时,程序应使用产品代码,在从用户那里获得添加的数量后,它必须对数据库进行更改

我正在使用 python 3.2 和 pyqt 4

任何帮助,将不胜感激

谢谢

山姆

4

2 回答 2

23

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. 这个函数记录在这里(抱歉,我更喜欢 pyside - 它与 PyQT 几乎相同)。还要注意itemAt,而不是仅仅item- 因为您将在单元格中获得项目,而不是它的内容。使用 的.text()功能QTableWidgetItem获取内容。

注意 - 这是使用“插槽和信号”,特别是“新样式”。当您使用 PyQT4 和 Python 3 时,您应该对“新东西”没有任何问题:-)

您可能会考虑浏览插槽和信号教程- 这可能会理顺这些抽象概念中的一些。祝你好运!

于 2013-01-29T17:58:18.940 回答
0

这是对我有用的代码:

def get_selected_cell_value():
    current_row = self.sold_items_details_table.currentRow()
    current_column = self.sold_items_details_table.currentColumn()
    cell_value = table.item(current_row, current_column).text()
于 2021-08-29T14:58:43.930 回答