我正在制作一个库存控制程序,我在获取选定单元格的值时遇到了问题,我知道我需要使用“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
任何帮助将不胜感激
谢谢
山姆
当
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 时,您应该不会遇到“新东西”的问题:-)
您可能会考虑浏览插槽和信号教程 - 这可能会理清其中一些抽象概念。祝你好运!
这是对我有用的代码:
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()
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()
cell_value = table.item(current_row, current_column).text()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'text'