Tkinter 文本:设置制表符空间不起作用

Hen*_*Zhu 3 python tkinter python-3.x

下面的代码应该将按下时的制表符空格数设置为 4。问题是它没有这样做(而是 8)。我查看了以前的 StackOverflow 问题,它们非常模糊。他们描述了使用 getPixels 函数,但从未解释如何使用它。加上 tkinter / tcl 文档很糟糕,所以我很困惑。

import tkinter as tk

root = tk.Tk()
text = tk.Text(root)
text.pack()

def tab(arg):
    print("tab pressed")
    text.insert(tk.INSERT, " " * 4)

text.bind("<Tab>", tab)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

小智 7

你非常接近你所需要的。您需要做的就是将 return 'break' 添加到您的 tab(arg) 函数中。这将阻止 tkinter 进一步传播事件。见下文

import tkinter as tk

root = tk.Tk()
text = tk.Text(root)
text.pack()

def tab(arg):
    print("tab pressed")
    text.insert(tk.INSERT, " " * 4)
    return 'break'

text.bind("<Tab>", tab)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

通过添加返回“中断”,您可以阻止 tkinter 进一步传播事件。您将获得 8 个空格,因为它使用了制表符,然后您在其上添加了额外的 4 个空格。

希望这可以帮助 :)