From 2a180490ea111c1e614c3693cae619321809cacd Mon Sep 17 00:00:00 2001 From: wolfpan Date: Mon, 16 Aug 2021 08:58:29 +0800 Subject: [PATCH] =?UTF-8?q?code=5Feditor:=20=E5=88=A0=E9=99=A4=E6=B5=B7?= =?UTF-8?q?=E8=B1=A1=E8=BF=90=E7=AE=97=E7=AC=A6=E4=BB=A5=E6=94=AF=E6=8C=81?= =?UTF-8?q?python3.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code_editor/code_handlers/base_handler.py | 3 ++- .../widgets/text_edit/base_text_edit.py | 20 +++++++++++-------- pyminer/utils/dev/system.py | 6 ++++-- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/pyminer/packages/code_editor/code_handlers/base_handler.py b/pyminer/packages/code_editor/code_handlers/base_handler.py index 6de71f2d..e8b3dc93 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 9451721b..1aadd23e 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 9f866a55..cb9ff305 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) -- Gitee