首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python中的tkinter中添加冒号后面的自动缩进功能?

如何在python中的tkinter中添加冒号后面的自动缩进功能?
EN

Stack Overflow用户
提问于 2020-03-12 17:35:36
回答 1查看 823关注 0票数 1

我正在制作一个文本编辑器,它拥有所有的功能,但不是自动缩进的特性,它可以在循环或条件之后自动添加空格。请告诉我如何制作,并尝试给出一个代码,可以做到这一点。我在Tkinter中做了这个,并希望这个函数在文本小部件中。我做了这个文本编辑。

我在Tkinter做的,所以请帮我给出一个自动缩进的代码。每当用户按‘::’按钮在下一行显示缩进时,我都试图触发事件,但它不遵循多级缩进的模式。喜欢

代码语言:javascript
代码运行次数:0
运行
复制
    for i in range(100):
        if i==5:
            break
        else:
            print('got till '+str(i))

但是我的代码不像这样,它只在第一行中添加空间,所以代码看起来像。

代码语言:javascript
代码运行次数:0
运行
复制
   for i in range(100):
      if i==5:
      break
   else:
      print('got till '+str(i))

所以这有点棘手。请评论任何相关的信息或问题,但请回答我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 18:02:14

您只需要从当前行获取缩进,并添加新的缩进级别。

下面是一个完整的工作示例:

代码语言:javascript
代码运行次数:0
运行
复制
import tkinter as tk
import re

root = tk.Tk()
text = tk.Text(root)
text.pack(fill="both", expand=True)

def autoindent(event):
    # the text widget that received the event
    widget = event.widget

    # get current line
    line = widget.get("insert linestart", "insert lineend")

    # compute the indentation of the current line
    match = re.match(r'^(\s+)', line)
    current_indent = len(match.group(0)) if match else 0

    # compute the new indentation
    new_indent = current_indent + 4

    # insert the character that triggered the event,
    # a newline, and then new indentation
    widget.insert("insert", event.char + "\n" + " "*new_indent)

    # return 'break' to prevent the default behavior
    return "break"

text.bind(":", autoindent)

root.mainloop()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60659212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档