如何检查Python Tkinter中是否存在菜单项



在pythontkinter上,我有以下代码用于创建只有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语句来检查菜单项是否:Delete me是否存在于菜单中。如果存在,则删除该菜单项(就像下面的代码片段,只是为了演示)

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

返回以下内容:

False
True

最新更新