在按开括号上添加右括号
Add closing bracket on press opening bracket
好的,所以在 VSCode 中,当您使用左括号时,它会自动使用右括号。相反,我希望它是尖括号。我该怎么做?例如:
按:<
输出:<>
提前致谢!
编辑:我要澄清一下。我在 Tkinter 文本小部件中执行此操作。所以按 <
将插入一个 >
。对不起,不清楚。
一个非常简单的解决方案是将函数绑定到 <KeyRelease>
,因为这将在默认绑定实际将字符插入小部件后触发。或者,您可以绑定到 <KeyPress>
并管理插入起始原始字符及其结束字符。
让我们从定义一个字典开始,它定义了哪些字符具有匹配的字符。在这种情况下,为了简单起见,我们将只使用 {} 和 <>:
matched_pairs = {"{": "}", "<": ">"}
接下来,让我们定义一个函数来检查事件以查看它是否针对我们字典中的字符。如果我们找到一个匹配的字符,我们会做两件事:我们插入匹配的字符,然后将插入点向后移动一个,以便插入字符位于字符对之间。
def maybe_insert_matching_pair(event):
matching = matched_pairs.get(event.char, None)
if matching:
event.widget.insert("insert", matching)
event.widget.mark_set("insert", "insert-1c")
最后,让我们将此函数绑定到每个按键,但您也可以仅将其绑定到您知道具有匹配对的键。
the_text_widget.bind('<KeyRelease>', maybe_insert_matching_pair)
好的,所以在 VSCode 中,当您使用左括号时,它会自动使用右括号。相反,我希望它是尖括号。我该怎么做?例如:
按:<
输出:<>
提前致谢!
编辑:我要澄清一下。我在 Tkinter 文本小部件中执行此操作。所以按 <
将插入一个 >
。对不起,不清楚。
一个非常简单的解决方案是将函数绑定到 <KeyRelease>
,因为这将在默认绑定实际将字符插入小部件后触发。或者,您可以绑定到 <KeyPress>
并管理插入起始原始字符及其结束字符。
让我们从定义一个字典开始,它定义了哪些字符具有匹配的字符。在这种情况下,为了简单起见,我们将只使用 {} 和 <>:
matched_pairs = {"{": "}", "<": ">"}
接下来,让我们定义一个函数来检查事件以查看它是否针对我们字典中的字符。如果我们找到一个匹配的字符,我们会做两件事:我们插入匹配的字符,然后将插入点向后移动一个,以便插入字符位于字符对之间。
def maybe_insert_matching_pair(event):
matching = matched_pairs.get(event.char, None)
if matching:
event.widget.insert("insert", matching)
event.widget.mark_set("insert", "insert-1c")
最后,让我们将此函数绑定到每个按键,但您也可以仅将其绑定到您知道具有匹配对的键。
the_text_widget.bind('<KeyRelease>', maybe_insert_matching_pair)