You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ttk.Style设置TMenubutton下拉列表所有选项的样式?

问题原因

ttk.OptionMenu的UI分为两个独立组件:

  • 顶部常驻的选中值展示区域,属于TMenubutton类,这也是你之前配置的my.TMenubutton样式唯一生效的部分
  • 点击后弹出的下拉选项列表,本质是独立的TMenu菜单组件,不属于TMenubutton的样式管辖范围,因此之前的配置不会作用到下拉选项上
解决方案

根据你的需求二选一即可:

方案1:全局统一所有下拉菜单字体

如果希望程序内所有菜单、下拉选项都用该字体,直接给TMenu类配置全局样式即可:

op_style = ttk.Style()
# 配置OptionMenu顶部选中项样式
op_style.configure('my.TMenubutton', font=('Microsoft Yahei', 9))
# 配置所有菜单(包含OptionMenu下拉列表)的全局字体
op_style.configure('TMenu', font=('Microsoft Yahei', 9))

# 原有OptionMenu初始化代码无需修改
trans_choose = ttk.OptionMenu(
    fm2, v, '',
    *list_zh,
    command=setlang,
    style='my.TMenubutton'
)

方案2:仅修改当前OptionMenu的下拉字体

如果不想影响程序内其他菜单的样式,可以直接获取当前OptionMenu对应的下拉菜单实例,单独配置字体:

op_style = ttk.Style()
op_style.configure('my.TMenubutton', font=('Microsoft Yahei', 9))

trans_choose = ttk.OptionMenu(
    fm2, v, '',
    *list_zh,
    command=setlang,
    style='my.TMenubutton'
)
# 单独为当前OptionMenu的下拉列表设置字体
trans_choose['menu'].configure(font=('Microsoft Yahei', 9))

提示:Windows平台部分旧版Tk对ttk主题下的TMenu全局样式渲染存在兼容问题,优先使用方案2,配置稳定性更高。

内容的提问来源于stack exchange,提问作者Motoko Kusanagi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:45:33