获取 Tkinter 菜单小部件中条目的列表(或字典或元组)

Getting a list (or dict, or tuple) of entries in a Tkinter menu widget

我的环境是 Python 2.7,运行 Windows 10。

我正在编写一个 Tkinter 应用程序,它将包含一个 "recent files" 菜单以方便用户使用。要创建该菜单,我不仅需要能够动态地添加、删除和重新排序菜单条目,而且还需要 确定存在多少条目以及这些条目是什么。 我希望它支持将 "cap" 文件列表(例如)五个最新文件的逻辑,并在新文件添加到列表时删除旧文件。它还支持 "clear history" 删除所有现有条目的功能。

为单个已知项目添加、删除和重新排序菜单内容是很容易的事; add_command()delete()insert_command() 方法将涵盖这些用例。但是我已经检查了几个在线参考资料,但我找不到可以告诉我 菜单当前内容的方法或属性, 甚至找不到可以告诉我 的方法或属性菜单当前包含多少条目。

这样的attributes/methods存在吗?或者我必须使用大锤方法,比如逐个索引重复执行 entrycget() 方法,直到遇到异常?

您可以使用参数为"end"index方法来获取最后一项的索引。

last_item = the_menu.index('end')

然后您可以使用它来遍历菜单中的所有项目。