Python使用option_add设置字体后如何重置为默认值
Tkinter 字体重置回默认状态方案
报错原因
触发类型报错来自两处代码问题:
- 重置字体的代码缺失右括号,存在语法错误
- Tk字体解析规则以空格作为参数分隔符,
Courier New字体名包含空格且未做特殊包裹,解析程序会将Courier识别为字体名,把后续的New识别为字号参数,因此触发「期望获得整数类型值,但实际得到了'New'」的报错。
之前设置Arial, 14未报错,是因为Arial字体名本身不含空格,虽然多余的逗号属于不规范写法,解析器仍能识别到后续的14作为字号,属于偶然生效,不符合Tk字体配置规范。
实现方法
修复指定字体的报错
如果仅需要修复报错、将字体指定为10号Courier New,需给带空格的字体名加大括号包裹,去掉多余逗号,补全右括号:
window.option_add("*Font", "{Courier New} 10")
真正重置为系统默认字体(推荐)
硬编码Courier New 10不属于恢复默认——不同操作系统、不同控件的原生默认字体、字号并不统一,硬编码值会破坏界面原生样式。要完全回到自定义字体前的状态,在关闭Frame4时清除之前通过option_add添加的自定义配置即可,Tk会自动回退到默认字体规则:
# 关闭Frame4时执行 Frame4.destroy() # 清除自定义option配置,自动回退默认样式 window.option_clear()
如果不需要清除全部自定义配置,可在初始化Frame4前提前保存默认字体值,关闭框架时将字体重新设置为预存的默认值即可。
内容的提问来源于stack exchange,提问作者Harold Meneley
相关产品推荐
相关产品推荐

