Пример #1
0
    def eventFilter(self, _, event: QEvent) -> bool:
        """Receive events for a QLineEdit and if enter is pressed
        start completion. Always returns False to indicate the
        target object should still process the event.
        """
        if not isinstance(event, QKeyEvent):
            return False

        lineedit = self._lineedit
        completer = lineedit.completer()
        if event.key() == Qt.Key_Return:
            # if completion list is of len = 1, accept the completion else continue
            if completer.completionCount() == 1:
                completion_text = completer.currentCompletion()
                if completion_text != lineedit.currentText():
                    # manually emit the code completion signal
                    completer.activated.emit(completion_text)
        elif event.key() in [Qt.Key_Down, Qt.Key_Up]:
            # If up or down pressed, start the completer
            completer.complete()

        return False
Пример #2
0
    def event(self, ev: QEvent) -> bool:

        #   Tab: Insert 4 spaces
        #   Arrow Up/Down: select a line from the history buffer
        #   Newline: Emit returned signal

        if ev.type() == QEvent.KeyPress:
            if ev.key() == Qt.Key_Tab:
                self.insert(' ' * 4)
                return True
            elif ev.key() == Qt.Key_Backtab:

                ccp = self.cursorPosition()
                tl = self.text()[:ccp]
                tr = self.text()[ccp:]

                ends_with_tab = re.match(r"(.*)\s\s\s\s$", tl)

                if ends_with_tab:
                    self.setText(tl[:-4] + tr)
                    self.setCursorPosition(ccp - 4)
                    return True

            elif ev.key() == Qt.Key_Up:
                self.recall(self.hist_index - 1)
                return True
            elif ev.key() == Qt.Key_Down:
                self.recall(self.hist_index + 1)
                return True
            elif ev.key() == Qt.Key_Return:
                if len(self.text()) == 0 and ev.modifiers(
                ) == Qt.ControlModifier:
                    self.open_text_edit()
                else:
                    self.returnkey()
                return True

        return super().event(ev)
Пример #3
0
 def _handle_edit(self, event: QtCore.QEvent):
     """Handle closing edit box and redisplayin label"""
     if event.type() == QtCore.QEvent.Type.KeyPress:
         key = event.key()
         if key in (QtCore.Qt.Key.Key_Return, QtCore.Qt.Key.Key_Enter):
             if not self.edit.hasAcceptableInput():
                 self.setCurrentWidget(self.label)
                 return
             self.label.setText(self.edit.text())
             self.setCurrentWidget(self.label)
             self.valueChanged.emit(self.label.text())
         if key == QtCore.Qt.Key.Key_Escape:
             self.setCurrentWidget(self.label)
     elif event.type() == QtCore.QEvent.FocusOut:
         self.setCurrentWidget(self.label)
Пример #4
0
    def keyPressEvent(self, evt: QtCore.QEvent) -> None:
        super(PLineEdit, self).keyPressEvent(evt)

        if (evt.key() == QtCore.Qt.Key_Return
                or evt.key() == QtCore.Qt.Key_Enter) and self.suppress_enter:
            evt.accept()