更改标签的重量而不影响其尺寸

时间:2017-09-19 17:18:56

标签: python tkinter

我想知道是否可以在不影响其大小的情况下更改Label小部件的重量(使其变为粗体)。我想使用默认字体,而不是自定义(命名)字体。

import tkinter as tk

root = tk.Tk()
root.geometry('150x150')

label = tk.Label(root, text='I am a pretty label')
label.pack(pady=50)

root.mainloop()

但是,当我尝试将其设为粗体时,它的大小似乎也会发生变化。我尝试过以下方法:

import tkinter as tk
import tkinter.font as tkFont

root = tk.Tk()
root.geometry('150x150')

label = tk.Label(root, text='I am a pretty label')
label.pack(pady=50)

font = tkFont.Font(font=label['font']).actual()
# print(font)

font['weight'] = 'bold'
# print(font)

label.configure(font=font)

root.mainloop()

......这就是我得到的东西(它对我来说甚至看起来都不大胆):

GUI1

我在改变体重之前和之后尝试print(font)size似乎是相同的,即使它看起来更大:

{'family': 'DejaVu Sans', 'size': 12, 'weight': 'normal', 'slant': 'roman', 'underline': 0, 'overstrike': 0} # before

{'family': 'DejaVu Sans', 'size': 12, 'weight': 'bold', 'slant': 'roman', 'underline': 0, 'overstrike': 0} # after

另一次尝试:

label.configure(font='-weight bold')

......我明白了:

GUI2

是否可以在不影响尺寸的情况下使标签变粗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是可变宽度字体,则大多数粗体字体将比非粗体字体宽。这与tkinter无关,这就是字体的工作方式。我认为大多数固定宽度字体的大小与粗体和非粗体相同。

如果您依赖于标签的默认大小,唯一可以选择的方法是选择粗体和普通字体宽度相同的字体系列。

另一种选择是使用各种选项来确保标签对于粗体字体足够大,并且布局使得当文本缩小时它不会改变大小。

这是来自文字处理程序的屏幕截图,以粗体和非粗体变体形式提供相对字体大小的示例:

enter image description here