Menu 实例

本文介绍了Python的Tkinter库中创建和配置Menu的具体方法,特别是通过.entryconfigure(0)来查询和设置菜单项的属性。通过对这个方法的探讨,读者可以更好地理解和定制Tkinter应用的菜单栏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值