Правильная обработка keyPressEvent в подклассе PyQT LineEdit - PullRequest
4 голосов
/ 19 февраля 2011

Итак, у меня есть 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 голосов
/ 19 февраля 2011

Полагаю, вам нужно поведение по умолчанию переопределенного метода 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)

надеюсь, это поможет, с уважением

...