1

我在使用 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()

有人可以帮我解决这个问题。谢谢。

4

1 回答 1

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)

文档中也提到了这一点:

如果您重新实现此处理程序,那么在您不对键执行操作的情况下调用基类实现非常重要。

于 2013-06-07T11:08:49.070 回答