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

如何自定义tkinter下拉菜单?运行代码出现两类报错求助

错误原因排查

1. AttributeError: 'NoneType' object has no attribute 'config'

tkinter 中所有布局方法pack()/grid()/place()的返回值都是None,你将组件创建和布局操作写在同一行并赋值给变量,最终变量拿到的是None而非OptionMenu实例,自然无法调用config方法。

2. TypeError: 'dict_keys' object is not subscriptable

原生tkinter的OptionMenu构造函数不支持直接传入width这类样式关键字参数,构造函数的可变参数仅接收下拉选项值,额外传入的关键字参数会导致内部逻辑处理异常。

修复方案

先单独创建OptionMenu实例赋值给变量,再调用布局方法,最后通过config方法自定义样式,还可以额外修改下拉弹出菜单的样式:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry('500x500')

selection = StringVar()

def show():
    Label(root, text=selection.get()).pack(pady=10)
   
# 正确写法:先创建组件实例,再布局,再配置样式
drop = OptionMenu(root, selection, 'one', 'two', 'three')
drop.pack(pady=10)
# 自定义下拉框本身的宽、背景色、前景色、字体
drop.config(width=10, bg='lightblue', fg='black', font=('微软雅黑',10))
# 自定义下拉弹出菜单的背景色、前景色、字体
drop['menu'].config(bg='white', fg='darkblue', font=('微软雅黑',10))

button = Button(root, text='show', command=show)
button.pack(pady=10)

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:48:02