python之menu
只有主菜单没有二级菜单的例子:

from tkinter import * root=Tk() root.wm_title('同济大学财务管理系统') menubar=Menu(root)#指定菜单实例的父窗口是root for item in ['文件','编辑','视图','关于']: menubar.add_command(label=item) root['menu']=menubar#指定主窗口的'menu'属性为刚刚创建的menubar root.mainloop()
主菜单携带子菜单的例子:

from tkinter import * root=Tk() menubar=Menu(root)# it produces a menu instance fmenu=Menu(menubar) for item in ['新建','打开','保存','另存为']: fmenu.add_cascade(label=item) emenu=Menu(menubar) for item in ['复制','粘贴','剪切']: emenu.add_cascade(label=item) vmenu=Menu(menubar) for item in ['默认视图','新式视图']: vmenu.add_cascade(label=item) amenu=Menu(menubar) for item in ['版权信息','其他说明']: amenu.add_cascade(label=item) menubar.add_cascade(label='文件',menu=fmenu) menubar.add_cascade(label='编辑',menu=emenu) menubar.add_cascade(label='视图',menu=vmenu) menubar.add_cascade(label='关于',menu=amenu) root['menu']=menubar root.mainloop()
制作弹出式菜单的例子:

from tkinter import * def xianshi(): #global root x1=Label(root,text='I love China',background='blue') x1.pack() root=Tk()#制作一个盛所有窗口的容器 menubar=Menu(root)#制作一个菜单实例 for x in ['vb','c','java','php','c++']: menubar.add_command(label=x) menubar.add_command(label='python',command=xianshi) def pop(event): menubar.post(event.x_root,event.y_root) root.bind('<Button-3>',pop) root.mainloop()
带分割横线的二级菜单:

from tkinter import * root=Tk() m=Menu(root)#创建一个菜单实例m,这个菜单实例依附在主窗口root上面。 m2=Menu(m)#创建一个二级菜单实例,这个实例依附在菜单m上,因为Menu的参数是widget,它是一个窗 #口,m也算是一个窗口了,只不过是菜单窗口。 for item in ['python','perl','php','ruby']: m2.add_command(label=item)#菜单m2调用add_command方法,用来增加菜单项目标签 m2.add_separator()#添加分割线,不需要任何参数 for item in ['java','c++','c']: m2.add_command(label=item)#增加二级菜单项目标签 m.add_cascade(label='语言',menu=m2)#给依附在root容器上的一级菜单m增加一个二级菜单 root['menu']=m#给root增加菜单属性,让其拥有一级菜单 root.mainloop()
增加复选按钮与单选按钮:

from tkinter import * root=Tk() m=Menu(root)#创建一个菜单实例m,这个菜单实例依附在主窗口root上面。 m2=Menu(m)#创建一个二级菜单实例,这个实例依附在菜单m上,因为Menu的参数是widget,它是一个窗 #口,m也算是一个窗口了,只不过是菜单窗口。 for item in ['python','perl','php','ruby']: m2.add_checkbutton(label=item)#菜单m2调用add_command方法,用来增加菜单项目标签,复选按钮 m2.add_separator()#添加分割线,不需要任何参数 for item in ['java','c++','c']: m2.add_radiobutton(label=item)#增加二级菜单项目标签,单选按钮 m.add_cascade(label='语言',menu=m2)#给依附在root容器上的一级菜单m增加一个二级菜单 root['menu']=m#给root增加菜单属性,让其拥有一级菜单 root.mainloop()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步