def keyPressEvent(self, e: QKeyEvent): if self.mode == Mode.INSERT: if e.key() in [Qt.Key_Space, Qt.Key_Return, Qt.Key_Slash ] and e.modifiers() == Qt.NoModifier: self.process_previous_word() super().keyPressEvent(e) elif self.mode == Mode.WORDCHECK: if e.modifiers() in [Qt.NoModifier, Qt.ShiftModifier]: self.handle_wordcheck_key_events(e) else: super().keyPressEvent(e) else: super().keyPressEvent(e)
def findScanCodeForEvent(event: QKeyEvent) -> Optional[int]: if event.modifiers() & Qt.KeypadModifier != 0: mapping = SCANCODE_MAPPING_NUMPAD else: mapping = SCANCODE_MAPPING key = event.key() return mapping.get(key, None)
def keyPressEvent(self, arg__1: QKeyEvent): # Shift+Enter triggers find previous, if the corresponding btn is enabled. if (arg__1.key() in [Qt.Key_Return, Qt.Key_Enter] and arg__1.modifiers() == Qt.ShiftModifier and self.find_prev_btn.isEnabled()): self.prev() else: super().keyPressEvent(arg__1)
def keyReleaseEvent(self, e: QKeyEvent): if self.mode == Mode.WORDCHECK: if e.modifiers() in [Qt.NoModifier, Qt.ShiftModifier]: self.handle_wordcheck_key_events(e) else: super().keyReleaseEvent(e) else: super().keyReleaseEvent(e)
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: QKeyEvent): if event.key() == Qt.Key_F and (event.modifiers() & Qt.ControlModifier): self.find_key() if event.key() == Qt.Key_Escape: if self.searchTxtBx is not None: self.searchTxtBx.hide() self.searchTxtBx = None self.clear_format() super(Editor, self).keyPressEvent(event)
def keyPressEvent(self, event: QtGui.QKeyEvent): if event.key() == Qt.Key_Backspace: self.setText("--") return sequence = [] for modifier, text in modmap.items(): if event.modifiers() & modifier: sequence.append(text) if Qt.Key_A <= event.key() <= Qt.Key_Z: sequence.append(chr(event.key())) self.setText("+".join(sequence))
def keyPressEvent(self, event: QtGui.QKeyEvent) -> None: """ Allow for searching for a node """ key = event.key() modifiers = event.modifiers() if key == QtCore.Qt.Key_F and modifiers & QtCore.Qt.ControlModifier: # User would like to search search_dialog = QDataDepGraphSearch(self, self.graph_widget) search_dialog.setModal(False) search_dialog.show() else: super().keyPressEvent(event)
def button_signal_for_key_event(self, event: QtGui.QKeyEvent, signal_name: str): if event.isAutoRepeat(): return None button = None if event.key() == Qt.Key_Up: if event.modifiers() == Qt.ShiftModifier: button = self.tele_fast elif event.modifiers() == Qt.NoModifier: button = self.tele_normal elif event.key() == Qt.Key_Down: if event.modifiers() == Qt.ShiftModifier: button = self.wide_fast elif event.modifiers() == Qt.NoModifier: button = self.wide_normal elif event.key() == Qt.Key_End and event.modifiers() == Qt.NoModifier: button = self.zoomstop if button is None: return getattr(button, signal_name).emit()
def keyPressEvent(self, event: QKeyEvent) -> None: if not self._chartIsSet: return if event.key() == Qt.Key_Left: self.chart().scroll(-10, 0) elif event.key() == Qt.Key_Right: self.chart().scroll(+10, 0) elif event.key() == Qt.Key_Up: self.chart().scroll(0, +10) elif event.key() == Qt.Key_Down: self.chart().scroll(0, -10) elif self._keySeqEnabled and event.key( ) == Qt.Key_R and event.modifiers() & Qt.ControlModifier: self.chart().zoomReset() else: super().keyPressEvent(event)
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 keyPressEvent(self, event: QKeyEvent): super().keyPressEvent(event) # Delete Key: if (event.key() == Qt.Key_Delete): current_widget = QApplication.focusWidget() if (current_widget == self.ui.tableWidget_fixedSpent or current_widget == self.ui.tableWidget_income or current_widget == self.ui.tableWidget_spent or current_widget == self.ui.tableWidget_values or current_widget == self.ui.tableWidget_sum): row_count = current_widget.rowCount() column_count = current_widget.columnCount() for item in current_widget.selectedItems(): row = item.row() column = item.column() if (row > -1 and row < row_count and column > -1 and column < column_count): current_widget.item(row, column).setData( Qt.DisplayRole, None) # Ctrl + c: if (event.key() == Qt.Key_C and event.modifiers() == Qt.ControlModifier): current_widget = QApplication.focusWidget() if (current_widget == self.ui.tableWidget_fixedSpent or current_widget == self.ui.tableWidget_income or current_widget == self.ui.tableWidget_spent or current_widget == self.ui.tableWidget_values or current_widget == self.ui.tableWidget_sum): items = current_widget.selectedItems() text = "" previous_row = -1 for item in items: current_row = item.row() if (previous_row == -1): pass elif (current_row == previous_row): text += "\t" elif (current_row == previous_row + 1): text += "\n" if (item.data(Qt.DisplayRole) != None): text += str(item.data(Qt.DisplayRole)) previous_row = item.row() QApplication.clipboard().setText(text) # Ctrl + v: if (event.key() == Qt.Key_V and event.modifiers() == Qt.ControlModifier): current_widget = QApplication.focusWidget() if (current_widget == self.ui.tableWidget_fixedSpent or current_widget == self.ui.tableWidget_income or current_widget == self.ui.tableWidget_spent or current_widget == self.ui.tableWidget_values or current_widget == self.ui.tableWidget_sum): column_count = current_widget.columnCount() row_count = current_widget.rowCount() text = QApplication.clipboard().text() current_row = current_widget.currentRow() initial_column = current_widget.currentColumn() lines = text.split('\n') text_all_lines = [] for line in lines: cells = line.split('\t') text_all_lines.append(cells) for line in text_all_lines: if (current_row >= current_widget.rowCount() ): # check if a new line is needed self.add_one_empty_lines(current_widget) column = initial_column for cell in line: if column < column_count: if (column == 3): # check if category exists is_in_spent_category = False correct_name = "" # correct name with Upper cases for category in self.__spent_categories: if cell.lower() == category.name.lower(): is_in_spent_category = True correct_name = category.name break if (is_in_spent_category): current_widget.item(current_row, column).setData( Qt.DisplayRole, correct_name) else: current_widget.item(current_row, column).setData( Qt.DisplayRole, cell) column += 1 current_row += 1 # Insert if (event.key() == Qt.Key_Insert): current_widget = QApplication.focusWidget() if (current_widget == self.ui.tableWidget_fixedSpent or current_widget == self.ui.tableWidget_income or current_widget == self.ui.tableWidget_spent): self.add_one_empty_lines(current_widget)
def handle_wordcheck_key_events(self, e: QKeyEvent): """ Remaps key events to their Wordcheck mode equivalents. Only handles NoModifier and ShiftModifier events. :param e: The key event to remap. :return: """ if e.key() in [ Qt.Key_Delete, Qt.Key_Backspace, Qt.Key_Comma, Qt.Key_Period, Qt.Key_Semicolon, Qt.Key_Colon, Qt.Key_Less, Qt.Key_Greater ]: if e.type() == QKeyEvent.KeyPress: super().keyPressEvent(e) elif e.type() == QKeyEvent.KeyRelease: super().keyReleaseEvent(e) elif e.modifiers() == Qt.NoModifier: if e.key() in [Qt.Key_S, Qt.Key_H]: mapped_e = QKeyEvent(e.type(), Qt.Key_Left, Qt.AltModifier, autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() in [Qt.Key_G, Qt.Key_L]: mapped_e = QKeyEvent(e.type(), Qt.Key_Right, Qt.AltModifier, autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() in [Qt.Key_F, Qt.Key_J]: mapped_e = QKeyEvent(e.type(), Qt.Key_Down, Qt.KeypadModifier, autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() in [Qt.Key_D, Qt.Key_K]: mapped_e = QKeyEvent(e.type(), Qt.Key_Up, Qt.KeypadModifier, autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() in [Qt.Key_C, Qt.Key_N]: mapped_e = QKeyEvent(e.type(), Qt.Key_Left, Qt.KeypadModifier, autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() in [Qt.Key_V, Qt.Key_M]: mapped_e = QKeyEvent(e.type(), Qt.Key_Right, Qt.KeypadModifier, autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() in [Qt.Key_R, Qt.Key_U ] and e.type() == QKeyEvent.KeyPress: if self.wordcheck_entry is not None: self.entry_idx += 1 self.next_word_replace() elif e.key() in [Qt.Key_E, Qt.Key_I ] and e.type() == QKeyEvent.KeyPress: if self.wordcheck_entry is not None: self.entry_idx -= 1 self.next_word_replace() elif e.key() in [Qt.Key_W, Qt.Key_O ] and e.type() == QKeyEvent.KeyPress: self.set_wordcheck_word_as_default() elif e.key() in [Qt.Key_A, Qt.Key_Z, Qt.Key_X]: if e.key() == Qt.Key_A: mapped_e = QKeyEvent(e.type(), Qt.Key_Semicolon, Qt.NoModifier, text=';', autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() == Qt.Key_Z: mapped_e = QKeyEvent(e.type(), Qt.Key_Period, Qt.NoModifier, text='.', autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) else: # Key_X mapped_e = QKeyEvent(e.type(), Qt.Key_Comma, Qt.NoModifier, text=',', autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.modifiers() == Qt.ShiftModifier: if e.key() in [Qt.Key_A, Qt.Key_Z, Qt.Key_X]: if e.key() == Qt.Key_A: mapped_e = QKeyEvent(e.type(), Qt.Key_Colon, Qt.ShiftModifier, text=':', autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) elif e.key() == Qt.Key_Z: mapped_e = QKeyEvent(e.type(), Qt.Key_Greater, Qt.ShiftModifier, text='>', autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e) else: # Key_X mapped_e = QKeyEvent(e.type(), Qt.Key_Less, Qt.ShiftModifier, text='<', autorep=e.isAutoRepeat(), count=e.count()) QApplication.sendEvent(self, mapped_e)
def keyReleaseEvent(self, event: QKeyEvent): print(event.modifiers(), event.key(), event.nativeScanCode(), event.nativeVirtualKey(), event.text()) self.renderer.sendEvent(event)