【问题标题】:Get QTableView cell value when pressing tab or enter key按 T​​ab 或 Enter 键时获取 QTableView 单元格值
【发布时间】:2020-03-23 04:54:03
【问题描述】:

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

所以我编写了以下代码 - 但只有在单击单元格时才能获得值,而不是在按 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)

【问题讨论】:

标签: python events keyboard pyqt5 qtableview


【解决方案1】:

一种可能的解决方案是覆盖 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_())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 2021-10-10
    • 2017-03-17
    • 2020-07-15
    • 2012-01-18
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多