如何完全删除 tkinter 中标签的垂直填充?
How to remove vertical padding of label in tkinter completely?
我想使用 tkinter 创建一个桌面应用程序。在标签中放置文本(大尺寸)时,我总是得到一个大的垂直填充。我能以任何方式摆脱这个额外的 space 吗?我想将文本放在标签的底部。
我已经试过设置 pady 和文本锚。
self.lbl_temp = Label(self.layout, text='20°C', font=('Calibri', 140), bg='green', fg='white', anchor=S)
self.lbl_temp.grid(row=0, column=1, sticky=S)
这是它的外观图片:
我想删除文本下方(和上方)的绿色 space。
无法使用 Label
删除文本上方和下方的 space,因为高度对应于整数行,其高度由字体大小决定。此行高保留 space 用于低于基线的字母,例如 'g',但由于您不使用此类字母,因此文本下方有很多空白 space(我不不过我的电脑上还有很多额外的 space。
要删除此 space,您可以使用 Canvas
而不是 Label
并将其调整为更小。
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, bg='green')
canvas.grid()
txtid = canvas.create_text(0, -15, text='20°C', fill='white', font=('Calibri', 140), anchor='nw')
# I used a negative y coordinate to reduce the top space since the `Canvas`
# is displaying only the positive y coordinates
bbox = canvas.bbox(txtid) # get text bounding box
canvas.configure(width=bbox[2], height=bbox[3] - 40) # reduce the height to cut the extra bottom space
root.mainloop()
我想使用 tkinter 创建一个桌面应用程序。在标签中放置文本(大尺寸)时,我总是得到一个大的垂直填充。我能以任何方式摆脱这个额外的 space 吗?我想将文本放在标签的底部。
我已经试过设置 pady 和文本锚。
self.lbl_temp = Label(self.layout, text='20°C', font=('Calibri', 140), bg='green', fg='white', anchor=S)
self.lbl_temp.grid(row=0, column=1, sticky=S)
这是它的外观图片:
我想删除文本下方(和上方)的绿色 space。
无法使用 Label
删除文本上方和下方的 space,因为高度对应于整数行,其高度由字体大小决定。此行高保留 space 用于低于基线的字母,例如 'g',但由于您不使用此类字母,因此文本下方有很多空白 space(我不不过我的电脑上还有很多额外的 space。
要删除此 space,您可以使用 Canvas
而不是 Label
并将其调整为更小。
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, bg='green')
canvas.grid()
txtid = canvas.create_text(0, -15, text='20°C', fill='white', font=('Calibri', 140), anchor='nw')
# I used a negative y coordinate to reduce the top space since the `Canvas`
# is displaying only the positive y coordinates
bbox = canvas.bbox(txtid) # get text bounding box
canvas.configure(width=bbox[2], height=bbox[3] - 40) # reduce the height to cut the extra bottom space
root.mainloop()