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()
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!
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)
def keyPressEvent(self, event: QKeyEvent): if event.key() in (Qt.Key_Enter, Qt.Key_Return): if self.commandList[ -1] != self.userTextEntry and self.userTextEntry != "": self.commandList.append(self.userTextEntry) self.length = len(self.userTextEntry + self.__line_end()) self.process.writeData(self.userTextEntry + self.__line_end(), self.length) self.userTextEntry = "" elif event.key() == Qt.Key_Backspace: if self.userTextEntry == "": return else: self.userTextEntry = self.userTextEntry[:-1] super().keyPressEvent(event) elif event.key() == Qt.Key_Up: if -len(self.commandList) < self.history: self.history -= 1 print(self.commandList[self.history]) return elif event.key() == Qt.Key_Down: if self.history < -1: self.history += 1 print(self.commandList[self.history]) return elif event.key() == Qt.Key_Delete: return elif event.modifiers() == Qt.ControlModifier: super().keyPressEvent(event) else: super().keyPressEvent(event) self.userTextEntry += event.text()
def event(self, event): """ overwritten from base class :param event: :return: """ if event.type() == QEvent.KeyPress: if event.key() == Qt.Key_Tab: if not self._compl.popup().isVisible(): self._compl.complete() self.nextCompletion(+1) return True if event.key() == Qt.Key_Backtab: if not self._compl.popup().isVisible(): self._compl.complete() self.nextCompletion(-1) return True if event.key() in [Qt.Key_Slash, Qt.Key_Backslash]: event = QKeyEvent(event.type(), event.key(), event.modifiers(), event.text()) return super().event(event)
def filter_text_key_release(self, source, event: QKeyEvent): if event.text() == '\r': if self.ui.filter_set_bt.isEnabled(): self.filter_text_accepted(True) elif event.text() == '\x1b': self.filter_text_cleared(True)
def keyReleaseEvent(self, event: QKeyEvent): print(event.modifiers(), event.key(), event.nativeScanCode(), event.nativeVirtualKey(), event.text()) self.renderer.sendEvent(event)