【问题标题】:Add closing bracket on press opening bracket在按下左括号上添加右括号
【发布时间】:2020-12-22 15:19:25
【问题描述】:

好的,所以在 VSCode 中,当您使用左括号时,它会自动使用右括号。相反,我希望这是尖括号。我该怎么做?例如:

媒体:<

输出:<>

提前致谢!

编辑:我将澄清这一点。我在 Tkinter 文本小部件中执行此操作。所以按< 将插入一个>。抱歉,不清楚。

【问题讨论】:

  • 这个问题已经回答here
  • 我正在尝试在 VSCode 外部的窗口中制作类似的系统。我不想在 VSCode 中启用它:/

标签: python tkinter text brackets


【解决方案1】:

一个非常简单的解决方案是将函数绑定到<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)

【讨论】:

    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 2021-02-26
    • 2016-08-26
    • 1970-01-01
    • 2012-02-25
    • 2017-04-10
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多