Python Qt:如何捕获"返回"在qtablewidget中

时间:2014-05-30 18:39:40

标签: python pyqt4 qtablewidget

我想在qtablewidget中捕获返回键,以便对当前标记的单元格执行某些操作。那就是:我希望用户按下"返回/输入"当任何单元格高位时键盘上的键。按下该按钮应该发出一种新方法。例如,显示一个包含该单元格内容的消息框。

如何将返回键的方法连接到方法?

由于我是python的新手,我不知道如何做到这一点,并会感激任何建议。

2 个答案:

答案 0 :(得分:2)

你的问题有点含糊不清。什么能够抓住返回键'意思? QTableWidget有几种返回信息的方法。

如果您想获取当前单元格的文本,您可以这样做:

my_table.currentItem().text()

<强>更新

在下面的评论中,您指定希望用户能够按EnterReturn,然后才能处理当前项目信息。

为此,您需要创建QTableWidget的子类并覆盖其keyPressEvent方法。一些灵感来自here

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)

答案 1 :(得分:0)

  • 这是在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)