如何检查 Python Tkinter 中是否存在菜单项
How to check if Menu item exists in Python Tkinter
在 python tkinter
我有以下代码用于创建只有 2 个菜单项的 Menu
:
my_menu = Menu(root, tearoff=False)
my_menu.add_command(label="Show details", command=whatever)
my_menu.add_command(label="Delete me", command=something)
现在我想添加一个if
语句来检查菜单项:删除我是否存在于菜单中。如果存在,则删除该菜单项(如以下代码片段,仅用于演示)
if... : #if statement to check if menu item "Delete me" exists
my_menu.delete("Delete me") #delete the menu item
else:
pass
有很多方法可以做到这一点,但最动态的方法是获取最后一项的索引,循环直到最后一个索引号,然后进行检查:
from tkinter import *
root = Tk()
def whatever():
for i in range(my_menu.index('end')+1):
if my_menu.entrycget(i,'label') == 'Delete me': # Delete if any has 'Delete me' as its label
my_menu.delete("Delete me")
my_menu = Menu(root, tearoff=False)
my_menu.add_command(label='Show details', command=whatever)
my_menu.add_command(label='Delete me')
root.config(menu=my_menu)
root.mainloop()
def menu_has_item(menu, label):
try:
menu.index(label)
return True
except TclError:
return False
root = Tk()
details = "Show details"
delete = "Delete me"
my_menu = Menu(root, tearoff=False)
my_menu.add_command(label=details, command=whatever)
my_menu.add_command(label=delete, command=whatever)
root.config(menu=my_menu)
print(menu_has_item(my_menu, 'Not in'))
print(menu_has_item(my_menu, details))
这个returns以下:
False
True
在 python tkinter
我有以下代码用于创建只有 2 个菜单项的 Menu
:
my_menu = Menu(root, tearoff=False)
my_menu.add_command(label="Show details", command=whatever)
my_menu.add_command(label="Delete me", command=something)
现在我想添加一个if
语句来检查菜单项:删除我是否存在于菜单中。如果存在,则删除该菜单项(如以下代码片段,仅用于演示)
if... : #if statement to check if menu item "Delete me" exists
my_menu.delete("Delete me") #delete the menu item
else:
pass
有很多方法可以做到这一点,但最动态的方法是获取最后一项的索引,循环直到最后一个索引号,然后进行检查:
from tkinter import *
root = Tk()
def whatever():
for i in range(my_menu.index('end')+1):
if my_menu.entrycget(i,'label') == 'Delete me': # Delete if any has 'Delete me' as its label
my_menu.delete("Delete me")
my_menu = Menu(root, tearoff=False)
my_menu.add_command(label='Show details', command=whatever)
my_menu.add_command(label='Delete me')
root.config(menu=my_menu)
root.mainloop()
def menu_has_item(menu, label):
try:
menu.index(label)
return True
except TclError:
return False
root = Tk()
details = "Show details"
delete = "Delete me"
my_menu = Menu(root, tearoff=False)
my_menu.add_command(label=details, command=whatever)
my_menu.add_command(label=delete, command=whatever)
root.config(menu=my_menu)
print(menu_has_item(my_menu, 'Not in'))
print(menu_has_item(my_menu, details))
这个returns以下:
False
True