正确处理Subclassed PyQT LineEdit中的keyPressEvent

Cry*_*ite 4 python pyqt subclassing

所以我有一个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!'
Run Code Online (Sandbox Code Playgroud)

你可以猜到,我可以捕捉shift键,但是你不能在LineEdit中输入文本.我试过捕捉按键,但我不确定如何处理它们以允许用户继续键入小部件.

我错过了什么?谢谢!

ser*_*nko 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)
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,问候