【发布时间】:2022-11-22 23:29:41
【问题描述】:
当使用 create_text 方法在画布上创建文本时,选项卡的宽度不是它应有的宽度,如 font.measure 所示。
import tkinter as tk
from tkinter.font import Font
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
font = Font(family='Arial', size=12)
s1 = "a\tb"
s2 = "a c"
print("Width:", s1, font.measure(s1)) # Width: a b 30
print("Width:", s2, font.measure(s2)) # Width: a c 33
canvas.create_text(10, 10, text=s1, font=font, anchor="nw")
canvas.create_text(10, 50, text=s2, font=font, anchor="nw")
root.mainloop()
font.measure的结果提示带空格的行要长一点,但是显示的是:
显示制表符的宽度明显大于空格。使用不同的字体会导致标签大小不同,但测量结果仍然不准确。没有制表符的文本的测量宽度是正确的。
如何获得正确的制表符宽度?这是一个错误吗?
【问题讨论】:
-
这真的取决于标签字符被处理。它可以转换为距离画布中的像素(我说或许), 但在控制台中打印时的字符数。
标签: python tkinter canvas fonts