gpt4 book ai didi

python - 按 T​​ab 或 Enter 键时获取 QTableView 单元格值

转载 作者:行者123 更新时间:2023-12-01 06:49:48 24 4
gpt4 key购买 nike

当用户按 Tab 或当用户将值放入单元格并按 Enter 时,我想获取 QTableView 单元格的值

view GUI image here

所以我编写了以下代码 - 但只有在单击单元格时才获得值,而不是按 TabEnter 时获得值。

    def table_config(self):
setHeaders = ("CANTIDAD", "UNIDAD", "DESCRIPCION", "PRECIO UNITARIO", "PRECIO TOTAL")
self.tableWidget.setHorizontalHeaderLabels(setHeaders)
self.tableWidget.wordWrap()
self.tableWidget.alternatingRowColors()
self.tableWidget.clicked.connect(self.dataCell)

def dataCell(self, item):
data = item.data() # I got the value of the cell only when i clicked in it.
print(data)

最佳答案

一种可能的解决方案是重写 keyPressEvent 方法并按按下的键进行过滤:

from PyQt5 import QtCore, QtGui, QtWidgets


class TableWidget(QtWidgets.QTableWidget):
def keyPressEvent(self, event):
super().keyPressEvent(event)
if event.key() in (
QtCore.Qt.Key_Tab,
QtCore.Qt.Key_Return,
QtCore.Qt.Key_Enter,
):
it = self.currentItem()
print(it)
if it is not None:
print(it.text())


class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)

self.tableWidget = TableWidget(6, 6)

for i in range(3):
for j in range(2):
it = QtWidgets.QTableWidgetItem("{}-{}".format(i, j))
self.tableWidget.setItem(i, j, it)

lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.tableWidget)
lay.addWidget(QtWidgets.QLineEdit())
lay.addWidget(QtWidgets.QSpinBox())


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)

w = Widget()
w.resize(640, 480)
w.show()
sys.exit(app.exec_())

关于python - 按 T​​ab 或 Enter 键时获取 QTableView 单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59073497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com