Tkinter文本:设置选项卡空间不起作用

时间:2015-09-13 23:48:27

标签: python python-3.x tkinter

以下代码应该设置按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()

2 个答案:

答案 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()