Python Qt: 如何在qtablewidget中捕获“回车”
我想在一个 qtablewidget
中捕捉到回车键的按下,以便对当前选中的单元格做点什么。也就是说,当用户在任何高亮的单元格上按下“回车”键时,我希望触发一个新的方法。比如,弹出一个消息框,显示那个单元格的内容。
我该如何把按下回车键的事件连接到一个方法呢?
因为我刚开始学Python,所以对这方面完全不懂,任何建议我都会很感激。
2 个回答
2
这里有一个在QTableWidget中捕捉按键的例子。
我用这个方法实现了一些功能,比如让用户可以选择多行,然后按空格键来设置或重置多行表格中的复选框。
class yourClass(QWidget):
def __init__(self, parent, **kwargs):
super().__init__(parent, **kwargs)
self.mLastKeyState = 0
# construct the table
self.mPlTable = QTableWidget()
self.mPlTable.keyPressEvent = self.tableOnKeyPressEvent # or keyReleaseEvent
def tableOnKeyPressEvent(self, event):
if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter
# do what needs to be done here
# you can return here if you do not want to pass on the return to the table
# pass on the keyPressEvent to the table
QTableWidget.keyPressEvent(self.mPlTable, event)
3
你的问题有点模糊。“捕捉回车键”是什么意思呢?QTableWidget
有几个方法可以返回信息。
如果你想获取当前单元格的文本,可以简单地这样做:
my_table.currentItem().text()
更新
在你下面的评论中,你提到你希望用户可以按 Enter
或 Return
键,然后处理当前项目的信息。
为了实现这个功能,你需要创建一个 QTableWidget
的子类,并重写它的 keyPressEvent
方法。部分灵感来自于 这里:
class MyTableWidget(QTableWidget):
def __init__(self, parent=None):
super(MyTableWidget, self).__init__(parent)
def keyPressEvent(self, event):
key = event.key()
if key == Qt.Key_Return or key == Qt.Key_Enter:
# Process current item here
else:
super(MyTableWidget, self).keyPressEvent(event)