Menu 实例

来源:互联网 发布:尺八制作图数据 编辑:程序博客网 时间:2024/06/01 07:44
Menu
 需先设置 root.option_add('*tearOff', FALSE)
 否则顶部菜单会有老式的虚线
 创建过程:
1. menubar = Menu(root)
以主窗口为parent,创建menubar
2. root["menu"] = menubar
指定主窗口的menu属性,为刚创建的menubar
3. menu_file = Menu(menubar)
    menubar.add_cascade(menu=menu_file, label='File')
创建一级菜单,添加菜单到menubar
4. menu_file.add_command(label='New', command=newFile)
    menu_file.add_checkbutton(label='Check', variable=check, onvalue=1, offvalue=0)
    menu_file.add_radiobutton(label='One', variable=radio, value=1)
为菜单添加具体的菜单项
还可用menu_file.add_separator() 添加分割线


其他可用属性
- underline 指定下划线。参数为字符的index(base-0)
- image  指定图片
- compound 指定混合方式
- state 指定状态。可用属性 disabled,normal
.entrycget(0, 'label') 查询属性
.entryconfigure('Close', state=DISABLED) 设置属性

.entryconfigure(0)  查询配置属性

from tkinter import *'''root = Tk()menu = Menu(root)for i in ('One', 'Two', 'Three'):    menu.add_command(label=i)if (root.tk.call('tk', 'windowingsystem')=='aqua'):    root.bind('<2>', lambda e: menu.post(e.x_root, e.y_root))    root.bind('<Control-1>', lambda e: menu.post(e.x_root, e.y_root))else:    root.bind('<3>', lambda e: menu.post(e.x_root, e.y_root))root.mainloop()'''def newFile():    print("new file")def openFile(*args):    print("open file")def closeFile(*args):    print("close file")root = Tk()root.title("菜单练习")# 常规配置root.option_add('*tearOff', FALSE)# 创建主菜单menubar = Menu(root)root["menu"] = menubar# 创建一级菜单menu_file = Menu(menubar)menu_edit = Menu(menubar)menu_check = Menu(menubar)menu_radio = Menu(menubar)sysmenu = Menu(menubar,name="system")menubar.add_cascade(menu=menu_file,label="File")menubar.add_cascade(menu=menu_edit,label="Edit")menubar.add_cascade(menu=menu_check,label="Check")menubar.add_cascade(menu=menu_radio,label="Radio")menubar.add_cascade(menu=sysmenu)# 创建二级菜单menu_new = Menu(menu_file)menu_file.add_cascade(menu=menu_new,label="New...")# 增加菜单项目image_python = PhotoImage(file="python.gif")image_java = PhotoImage(file="java.gif")menu_new.add_command(label="Python File", image=image_python, compound="left", command=newFile)menu_new.add_command(label="Java File", image=image_java, compound="left", command=newFile)# 增加分割线menu_file.add_separator()menu_file.add_command(label="Open", command=openFile)menu_file.add_command(label="Close", command=closeFile)menu_edit.add_command(label="Cut", command=newFile)menu_edit.add_command(label="Copy", command=openFile)menu_edit.add_command(label="Paste", command=closeFile, state="disabled")# check菜单项check_one = StringVar()check_two = StringVar()menu_check.add_checkbutton(label="Check One", variable=check_one, onvalue=1, offvalue=0)menu_check.add_checkbutton(label="Check Two", variable=check_two, onvalue=1, offvalue=0)check_one.set(1)# Radio菜单项radio = StringVar()menu_radio.add_radiobutton(label="Item One", variable=radio, value=1)menu_radio.add_radiobutton(label="Item Two", variable=radio, value=2)radio.set(2)# 获取、改变菜单项值# print("label={!r}".format(menu_file.entrycget(2,"label")))  # 获取菜单第二项的label值menu_file.entryconfigure("Close", state=DISABLED)# print("configure={}".format(menu_file.entryconfig(0)))root.mainloop()



0 0
原创粉丝点击