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

如何在CustomTkinter的CTkComboBox中实现可滚动下拉列表?

给CTkComboBox下拉列表添加滚动条的实现方法

方法一:利用内置参数自动启用滚动条

CTkComboBox本身支持通过height参数控制下拉列表的可见选项行数,当选项总数超过这个数值时,会自动显示垂直滚动条。只需在创建组件时指定height即可:

import customtkinter

customtkinter.set_appearance_mode("System")  # Modes: system (default), light, dark
customtkinter.set_default_color_theme("blue")  # Themes: blue (default), dark-blue, green

root = customtkinter.CTk()

# 设置height为5,下拉列表最多显示5个选项,超过则自动出现滚动条
combo_box = customtkinter.CTkComboBox(
    root,
    values=["Java", "CSS", "Python", "PHP", "HTML", "C#", "JavaScript", "Ruby", "C", "C++"],
    height=5
)
combo_box.pack(padx=20, pady=20)

# 保留原有的tab补全逻辑
def on_tab_complete(event):
    available_options = ["Java", "CSS", "Python"]
    current_text = combo_box.get()
    completions = [option for option in available_options if option.lower().startswith(current_text.lower())]
    if completions:
        combo_box.configure(values=completions)
    else:
        combo_box.configure(values=(" "))

def call_on_tab_complete_twice(event):
    on_tab_complete(event)
    root.after(10, lambda: on_tab_complete(event))

combo_box.bind("<KeyPress>", call_on_tab_complete_twice)

root.mainloop()

方法二:自定义滚动条样式(可选)

如果需要调整滚动条的外观(比如宽度、颜色),可以通过访问CTkComboBox内部的_dropdown属性,获取下拉框的滚动条组件进行配置:

# 在创建combo_box之后添加以下代码
dropdown = combo_box._dropdown
# 修改滚动条宽度
dropdown._scrollbar.configure(width=12)
# 修改滚动条颜色(可根据当前主题调整)
dropdown._scrollbar.configure(fg_color="#4a6fa5", button_color="#2d4a75")

内容的提问来源于stack exchange,提问作者Erlan Nauval Q

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:02:21