如果keyPressEvent处于打开状态,则无法键入QlineEdit

时间:2013-06-07 11:04:43

标签: python pyqt4

我遇到QLineEdit问题,如果我在代码中启用了keyPressEvent,那么我无法在QLineEdit中输入任何内容。

class SearchBox(gui.QLineEdit):
    def __init__(self, parent=None):
        super(SearchBox, self).__init__(parent)

        self.setWindowTitle("Explorer")
        self.setGeometry(500,500,400,40)
        font = gui.QFont()
        font.setPointSize(15)
        self.setFont(font)

    # if i disable this function then it works..
    def keyPressEvent(self, event):
        if event.key() == core.Qt.Key_Escape:
            self.close()
        if event.key() == core.Qt.Key_Enter:
            print self.text()
            self.close()

有人可以帮我这个.. 感谢。

1 个答案:

答案 0 :(得分:2)

如果你没有调用基类的keyPressEvent,它怎么知道某个键被按下了?

def keyPressEvent(self, event):
    if event.key() == core.Qt.Key_Escape:
        self.close()
    if event.key() == core.Qt.Key_Enter:
        print self.text()
        self.close()
    else:
        super(SearchBox, self).keyPressEvent(event)

documentation中也提到了这一点:

  

如果重新实现此处理程序,则调用非常重要   如果你不对密钥采取行动,则为基类实现。