Beispiel #1
0
    def keyPressEvent(self, event: QKeyEvent):
        print(f"KeySequenceEdit received a {event.key()} event")
        if event.key() in [Qt.Key_Escape, Qt.Key_Enter]:
            # Ignore Escape and Enter to let the dialog receive them. We don't
            # need to ignore tab; presumable, this is event-filtered by the
            # dialog.
            event.ignore()
        else:
            super().keyPressEvent(event)

            # Stop editing
            self.setKeySequence(self.keySequence())
Beispiel #2
0
    def __key_press_handler(self, event: QKeyEvent) -> None:
        """
        Only act on alphabetical key presses
        :return None:
        """

        self.logger.debug("running")
        if type(event) == QKeyEvent:
            if 0x41 <= event.key() <= 0x5a:
                self.flag_box.set_flag(chr(event.key()))
                if self.__exp_created:
                    self.save_device_data(('Keyflag', ''))
            event.accept()
        else:
            event.ignore()
        self.logger.debug("done")
Beispiel #3
0
    def keyPressEvent(self, key_event: QKeyEvent) -> None:
        if self.completer and self.completer.popup().isVisible():
            # The following keys are forwarded by the completer to the widget
            key = key_event.key()
            if key in (Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab,
                       Qt.Key_Backtab):
                key_event.ignore()
                return  # let the completer do default behavior

        is_ctrl_modifier = (key_event.modifiers() & Qt.ControlModifier) != 0
        is_shift_modifier = (key_event.modifiers() & Qt.ShiftModifier) != 0
        ctrl_or_shift = is_ctrl_modifier or is_shift_modifier

        is_shortcut = is_ctrl_modifier and key_event.key(
        ) == Qt.Key_E  # CTRL+E
        if not self.completer or not is_shortcut:  # do not process the shortcut when we have a completer
            QLineEdit.keyPressEvent(self, key_event)

        if not self.completer or ctrl_or_shift and key_event.text() == '':
            return

        eow = "~!@#$%^&*()_+{}|:\"<>?,./;'[]\\-="  # end of word
        has_modifier = (key_event.modifiers() !=
                        Qt.NoModifier) and not ctrl_or_shift
        completion_prefix = self.text_under_cursor()

        if not is_shortcut:
            event_text = key_event.text()
            if has_modifier or not event_text or len(
                    completion_prefix) < 1 or event_text[-1] in eow:
                self.completer.popup().hide()
                return

        if completion_prefix != self.completer.completionPrefix():
            self.completer.setCompletionPrefix(completion_prefix)
            self.completer.popup().setCurrentIndex(
                self.completer.completionModel().index(0, 0))

        cr = self.cursorRect()
        cr.setWidth(
            self.completer.popup().sizeHintForColumn(0) +
            self.completer.popup().verticalScrollBar().sizeHint().width())
        self.completer.complete(cr)  # popup it up!
Beispiel #4
0
    def keyPressEvent(self, e: QKeyEvent):
        textCursor = self.textCursor()

        if (e.key() == Qt.Key_Return
                or e.key() == Qt.Key_Enter) and self._exitOnReturn:
            self.parent().accept()
        elif len(self.toPlainText()) - (
                textCursor.selectionEnd() -
                textCursor.selectionStart()) < self._maxlength:
            if not self._validator or self._validator.regExp().exactMatch(
                    e.text()):
                super().keyPressEvent(e)
            elif not e.text().isprintable():
                if e.matches(QKeySequence.Paste):
                    self.paste(QApplication.clipboard().text())
                    e.ignore()
                else:
                    super().keyPressEvent(e)
            else:
                e.ignore()

        elif not e.text().isprintable() and not e.matches(QKeySequence.Paste):
            super().keyPressEvent(e)
        else:
            e.ignore()
Beispiel #5
0
    def keyPressEvent(self, event: QtGui.QKeyEvent) -> None:
        if self.completer is not None and self.completer.popup().isVisible():
            if event.key() in [  # Ignore keys when popup is present
                QtCore.Qt.Key_Enter,
                QtCore.Qt.Key_Return,
                QtCore.Qt.Key_Escape,
                QtCore.Qt.Key_Tab,
                QtCore.Qt.Key_Down,
                QtCore.Qt.Key_Up,
            ]:
                event.ignore()
                return

        super().keyPressEvent(event)

        eow = "~!@#$%^&*()+{}|:\"<>?,./;'[]\\-="
        tc = self.textCursor()
        tc.select(QtGui.QTextCursor.WordUnderCursor)
        prefix = tc.selectedText()
        if prefix != self.completer.completionPrefix():
            self.completer.setCompletionPrefix(prefix)
            self.completer.popup().setCurrentIndex(
                self.completer.completionModel().index(0, 0)
            )

        if (
            len(prefix) < 2
            or event.text() == ""
            or event.text()[-1] in eow
            or prefix == self.completer.currentCompletion()
        ):
            self.completer.popup().hide()
        else:
            rect = self.cursorRect()
            rect.setWidth(
                self.completer.popup().sizeHintForColumn(0)
                + self.completer.popup().verticalScrollBar().sizeHint().width()
            )
            self.completer.complete(rect)
Beispiel #6
0
 def keyPressEvent(self, event: QKeyEvent):
     if event.key() == Qt.Key_Escape:
         self.close()
     else:
         event.ignore()
 def keyReleaseEvent(self, event: QtGui.QKeyEvent):
   event.ignore()
 def keyPressEvent(self, event: QtGui.QKeyEvent):
   event.ignore()