在子类化的PyQT LineEdit中正确处理keyPressEvent

4

我有一个 QLineEdit,想要捕获 shift 键按下事件。

以下是我的代码:

class NoteText(QtGui.QLineEdit):
    def __init__(self, parent):
        super (NoteText, self).__init__(parent)

    def keyPressEvent(self, event):
        if (event.modifiers() & QtCore.Qt.ShiftModifier):
            self.shift = True
            print 'Shift!'

你可以猜到,我能捕捉到Shift键按下的事件,但是接下来你就无法在LineEdit中输入文本了。我尝试过捕捉按键事件,但是不确定该如何处理它们以允许用户继续在小部件中输入。

我错过了什么?谢谢!

1个回答

6

我猜你希望使用重写的keyPressEvent方法的默认行为,你需要调用基类的实现,像这样:

def keyPressEvent(self, event):
    if (event.modifiers() & QtCore.Qt.ShiftModifier):
        self.shift = True
        print 'Shift!'
    # call base class keyPressEvent
    QtGui.QLineEdit.keyPressEvent(self, event)

希望这能帮到您,谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接