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

如何使用ttk.Style修改Combobox下拉选项窗口的颜色?

ttk Combobox选中项与下拉列表颜色修改方法

ttk框架下TCombobox样式规则默认仅覆盖选择输入框本体部分,下拉弹出的选项列表是独立的原生Tk Listbox组件,不受ttk主题配置直接管控,因此无法在TCombobox的configure参数中找到下拉列表对应的配置项。选中项颜色、下拉列表背景色均支持自定义,实现方式如下:

配置规则说明

  • 输入框本体的选中项颜色:直接补全TCombobox配置中留空的selectbackground参数即可,selectforeground为选中项文字颜色
  • 下拉选项列表颜色:需要通过Tcl底层接口获取下拉列表对应的Listbox对象,单独配置其背景、文字、选中态颜色

完整实现代码

import tkinter as tk
from tkinter import ttk

frame = tk.Tk()
frame.geometry("400x300")

# 配置Combobox本体主题样式
combostyle = ttk.Style()
combostyle.theme_create('combostyle', parent='alt',
    settings={
        'TCombobox': {
            'configure': {
                'fieldbackground': '#313131',
                'foreground':'#FFFFFF',
                'selectbackground':'#555555',  # 输入框内选中项背景色
                'selectforeground':'#FFFFFF',  # 输入框内选中项文字色
                'bordercolor':'white',
                'background': '#313131'
            }
        }
    }
)
combostyle.theme_use('combostyle')
modechoices=ttk.Combobox(frame,values=["A","B","C"], width=50, state="readonly")
modechoices.place(x=20, y=250)

# 配置下拉列表样式
def config_dropdown_style(event=None):
    # 获取下拉弹出窗口路径
    popdown = modechoices.tk.call("ttk::combobox::PopdownWindow", modechoices)
    # 获取弹出窗口内的列表框组件路径
    dropdown_lb = f"{popdown}.f.l"
    # 配置列表框颜色
    modechoices.tk.call(dropdown_lb, "configure",
                        "-bg", "#313131",  # 下拉列表背景色
                        "-fg", "#FFFFFF",  # 下拉列表默认文字色
                        "-selectbackground", "#555555",  # 下拉列表选中项背景色
                        "-selectforeground", "#FFFFFF"  # 下拉列表选中项文字色
                        )
# 绑定首次点击事件触发配置,避免组件未初始化时找不到弹出层
modechoices.bind("<ButtonPress-1>", config_dropdown_style, add="+")

frame.mainloop()

注意事项

  • 不要给ttk.Combobox组件直接传入background、foreground这类原生Tk组件参数,ttk组件不识别这类参数,所有本体样式需通过ttk.Style统一配置,避免样式冲突
  • 下拉列表配置不要在Combobox初始化后立即执行,此时弹出层尚未创建,会触发找不到组件的报错,绑定点击事件触发是兼容性最好的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:39:42