如何在不改变字体与字号的前提下将tk.Label文本设为粗体?
解决Tkinter Label仅加粗不改变原字体字号的问题
问题原因
直接调用label.config(font="bold")时,并非在原有字体基础上添加粗体样式,而是将字体整体替换为Tk默认的"bold"字体配置——这会覆盖原字体的字体族、字号等所有属性,导致字体和字号发生变化。
解决方案
要保留原有字体和字号仅添加粗体,需要先获取标签当前的字体配置,修改其粗体属性后再重新应用:
import tkinter as tk from tkinter import font window = tk.Tk() window.title("Login") window.geometry("300x200") label1 = tk.Label(window, text="Username") # 获取标签当前的字体对象 current_font = font.Font(font=label1.cget("font")) # 将字体设置为粗体 current_font.config(weight="bold") # 把修改后的字体应用回标签 label1.config(font=current_font) label1.grid(row=0, column=0) label2 = tk.Label(window, text="Password") label2.grid(row=1, column=0) window.mainloop()
补充说明
你之前获取到的('font', 'font', 'Font', <string object: 'TkDefaultFont'>, 'bold')中,TkDefaultFont是Tk的默认字体族。如果需要直接基于默认字体设置粗体,也可以这样写:
default_bold_font = font.Font(family="TkDefaultFont", weight="bold") label1.config(font=default_bold_font)
但直接获取标签当前字体的方式更通用,能适配标签继承的自定义字体配置。
内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows
相关产品推荐
相关产品推荐

