请问Tkinter中mb["menu"] = mb.menu这行代码的作用是什么?
嘿,我来帮你弄明白这行代码到底干啥用的!
首先得搞清楚Tkinter里Menubutton和Menu的关系:Menubutton本质上就是个"触发按钮"——它本身只是个带样式的按钮,没有内置的菜单内容;而Menu才是真正包含选项(比如你代码里的mayo、ketchup复选框)的菜单对象。
把你代码里的步骤拆解一下就懂了:
- 先创建了
mb = Menubutton(top, text="condiments", relief=RAISED):这是一个显示"condiments"的凸起按钮,但此时它和任何菜单都没关系,点击它啥反应都没有。 - 接着
mb.menu = Menu(mb, tearoff = 0):创建了一个属于mb的Menu对象,还设置了不能拖拽分离,但这个菜单现在只是个"独立的菜单文件",没和按钮挂钩。 - 关键就是
mb["menu"] = mb.menu这行!它的作用就是把你刚创建的Menu对象绑定到Menubutton的menu属性上,相当于告诉Tkinter:"喂,这个按钮点下去的时候,就弹出这个Menu菜单哈!"
说白了,这行就是按钮和菜单之间的"连接线"——没有它,按钮是按钮,菜单是菜单,完全不搭边;加上它,点击按钮才会弹出你定义好的那些复选框选项。
你可以试试把这行注释掉运行代码,点击"condiments"按钮,肯定啥菜单都弹不出来,这样就能直观感受到它的作用啦!
相关代码回顾:
from tkinter import * import tkinter.messagebox top = Tk() mb= Menubutton ( top, text="condiments", relief=RAISED ) mb.grid() mb.menu = Menu ( mb, tearoff = 0) mb["menu"] = mb.menu # 就是这行关键绑定代码 mayoVar = IntVar() ketchVar = IntVar() mb.menu.add_checkbutton ( label="mayo", variable=mayoVar ) mb.menu.add_checkbutton ( label="ketchup", variable=ketchVar ) mb.pack() top.mainloop()
内容的提问来源于stack exchange,提问作者user9093127
相关产品推荐
相关产品推荐

