def keyPressEvent(self, event):
key = event.key()
text = self.text()
if key == Qt.Key_Space:
if text and not text.endswith('-'):
self.setText(text + '-')
elif key == Qt.Key_Tab:
if text and len(text.split('-')) < 3 and not text.endswith('-'):
self.setText(text + '-')
else:
self.setText(text)
elif key == Qt.Key_Escape:
if text:
self.parent.reset()
else:
self.parent.close()
else:
return QLineEdit.keyPressEvent(self, event)
python类Key_Tab()的实例源码
def keyPressEvent(self, event):
key = event.key()
if key == Qt.Key_Return:
cursor = self.textCursor()
indentLvl = self.findLineIndentLevel()
if self.openBlockDelimiter is not None:
cursor.movePosition(QTextCursor.PreviousCharacter,
QTextCursor.KeepAnchor)
if cursor.selectedText() == self.openBlockDelimiter:
indentLvl += 1
super(BaseCodeEditor, self).keyPressEvent(event)
newLineSpace = "".join(self._indent for _ in range(indentLvl))
cursor = self.textCursor()
cursor.insertText(newLineSpace)
elif key in (Qt.Key_Backspace, Qt.Key_Backtab):
cursor = self.textCursor()
if key == Qt.Key_Backtab and cursor.hasSelection():
self.performLinewiseIndent(cursor, False)
else:
cursor.movePosition(QTextCursor.PreviousCharacter,
QTextCursor.KeepAnchor,
len(self._indent))
if cursor.selectedText() == self._indent:
cursor.removeSelectedText()
else:
super(BaseCodeEditor, self).keyPressEvent(event)
elif key == Qt.Key_Tab:
cursor = self.textCursor()
if cursor.hasSelection():
self.performLinewiseIndent(cursor)
else:
cursor.insertText(self._indent)
else:
super(BaseCodeEditor, self).keyPressEvent(event)
# --------------
# Other builtins
# --------------
def eventFilter(self, target, event):
def match(s1, s2):
for x in s2:
if s1.matches(x) == QKeySequence.ExactMatch:
return True
return False
if target == self.inputTextBox:
if isinstance(event, QKeyEvent):
if event.type() == QKeyEvent.KeyPress:
event_sequence = QtHelper.key_event_sequence(event)
if match(event_sequence, Settings().new_line_key):
return False
if match(event_sequence, Settings().send_key):
self.send_input()
return True
if event.key() == Qt.Key_Tab:
self.inputTextBox.insertPlainText(" "*Settings().terminal_tab_spaces)
return True
if event.key() == Qt.Key_Up and (event.modifiers() & Qt.ControlModifier):
if self._input_history_index > 0:
self._input_history_index -= 1
self.inputTextBox.clear()
self.inputTextBox.setPlainText(self.terminal.input(self._input_history_index))
if event.key() == Qt.Key_Down and (event.modifiers() & Qt.ControlModifier):
if self._input_history_index < self.terminal.last_input_idx():
self._input_history_index += 1
self.inputTextBox.clear()
self.inputTextBox.setPlainText(self.terminal.input(self._input_history_index))
elif target == self.outputTextEdit:
if isinstance(event, QKeyEvent):
if event.type() == QEvent.KeyPress:
if event.key() == Qt.Key_Up:
self.connection.send_bytes(b"\x1b[A")
if event.key() == Qt.Key_Down:
self.connection.send_bytes(b"\x1b[B")
else:
t = event.text()
if t:
self.connection.send_character(t)
return True
elif target == self.outputTextEdit.verticalScrollBar():
if isinstance(event, QHideEvent):
return True
return False