以下代码应该设置按Tab键时的制表符空格数。问题是它没有这样做(它改为8)。我查看过之前的StackOverflow问题,它们非常模糊。他们描述了使用getPixels函数,但从不expalin如何使用它。加上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()
答案 0 :(得分:4)
你非常接近你所需要的。您需要做的就是在tab(arg)函数中添加return'break'。这将使tkinter不再传播事件。见下文
#mySol {
display: none;
}
#YASS {
display: none;
}
#Tak {
display: none;
}
通过添加返回'break',您可以阻止tkinter进一步传播该事件。您将获得8个空格,因为它正在使用选项卡,然后您将在其上添加额外的4个空格。
希望这会有所帮助:)
答案 1 :(得分:1)
您不需要事件处理程序来执行此操作,只需使用所需的选项卡宽度配置Text
窗口小部件:
import tkinter as tk
import tkinter.font as tkfont
root = tk.Tk()
text = tk.Text(root)
text.pack()
font = tkfont.Font(font=text['font']) # get font associated with Text widget
tab_width = font.measure(' ' * 4) # compute desired width of tabs
text.config(tabs=(tab_width,)) # configure Text widget tab stops
root.mainloop()