diff --git a/pyminer/packages/code_editor/code_handlers/base_handler.py b/pyminer/packages/code_editor/code_handlers/base_handler.py index 6de71f2d399f93af5ae766ff407f276f5bc1fa7b..e8b3dc93d2013ea9768760d7eb56d986caed29e8 100644 --- a/pyminer/packages/code_editor/code_handlers/base_handler.py +++ b/pyminer/packages/code_editor/code_handlers/base_handler.py @@ -68,7 +68,8 @@ class BaseHandler(CodeEditorBaseObject): position: 游标的位置,是一个整数,而不是行列号 selection_range: 选区的位置,是一对整数,表示起止位置,而不是行列号 """ - if (a := self.analyzer) is not None: + a = self.analyzer + if a is not None: if (code, position, selection_range) == (a.code, a.cursor, a.selection_range): return self.analyzer = self.analyzer_class(code, position, selection_range) diff --git a/pyminer/packages/code_editor/widgets/text_edit/base_text_edit.py b/pyminer/packages/code_editor/widgets/text_edit/base_text_edit.py index 9451721b3611656794d5303b88e5dc5f39696fa3..1aadd23e65ab6181c023da721c122e404fc6aa06 100644 --- a/pyminer/packages/code_editor/widgets/text_edit/base_text_edit.py +++ b/pyminer/packages/code_editor/widgets/text_edit/base_text_edit.py @@ -8,13 +8,13 @@ from itertools import groupby from queue import Queue from typing import Callable, Tuple, Dict, List, TYPE_CHECKING, Type, Any +import utils from PySide2.QtCore import SignalInstance, Signal, Qt, QTimer, QModelIndex, QUrl, QRect, QPoint from PySide2.QtGui import QFocusEvent, QTextCursor, QMouseEvent, QKeyEvent, QDragEnterEvent, QDropEvent, QPainter, \ QColor, QTextFormat, QFontDatabase, QFont, QTextDocument from PySide2.QtWidgets import QPlainTextEdit, QWidget, QApplication, QTextEdit, QLabel, QMenu, QAction from jedi.api.classes import Completion as CompletionResult -import utils from .line_number_area import QLineNumberArea from ..auto_complete_dropdown.base_auto_complete_dropdown import BaseAutoCompleteDropdownWidget from ...code_handlers.base_handler import BaseAnalyzer, BaseHandler @@ -493,14 +493,18 @@ class PMBaseCodeEdit(CodeEditorBaseObject, QPlainTextEdit): # 即分别通过event.text()和event.key()+event.modifier()进行处理 text, key, modifiers = event.text(), event.key(), int(event.modifiers()) no_modifier = modifiers == Qt.NoModifier - if no_modifier and (callback := self.key_press_mapping.get(text, None)) is not None: - callback(event) - elif no_modifier and (callback := self.key_press_mapping.get(key, None)) is not None: - callback(event) - elif (callback := self.key_press_mapping.get((key, modifiers), None)) is not None: - callback(event) + callback_with_text = self.key_press_mapping.get(text, None) + callback_with_key = self.key_press_mapping.get(key, None) + callback_with_modifiers = self.key_press_mapping.get((key, modifiers), None) + if no_modifier and callback_with_text is not None: + callback = callback_with_text + elif no_modifier and callback_with_key is not None: + callback = callback_with_key + elif callback_with_modifiers is not None: + callback = callback_with_modifiers else: - super().keyPressEvent(event) + callback = super().keyPressEvent + callback(event) self.update_handler_code() def on_left_parenthesis(self, event: QKeyEvent): diff --git a/pyminer/utils/dev/system.py b/pyminer/utils/dev/system.py index 9f866a558483c12a6a8d49acf3ab653be428b3a6..cb9ff30538cd5e0d8eccec255ae693bce9528e3b 100644 --- a/pyminer/utils/dev/system.py +++ b/pyminer/utils/dev/system.py @@ -8,11 +8,13 @@ import chardet def system(*args: Union[str, Path]): args = [str(arg) for arg in args] result = subprocess.run(args=args, capture_output=True) - if stdout := result.stdout: + stdout = result.stdout + if stdout: print('Out: ') stdout = stdout.decode(chardet.detect(result.stdout)['encoding']) print(stdout) - if stderr := result.stderr: + stderr = result.stderr + if stderr: print('Error: ') stderr = stderr.decode(chardet.detect(result.stderr)['encoding']) print(stderr)