从 tkinter 的菜单中获取选项列表的方法?
Way to get list of options from a menu in tkinter?
对于一个项目,我希望菜单中的选项根据另一个菜单的输入而改变。为此,我最初的计划是删除菜单中的所有选项并添加新选项以与其他菜单相对应;但是,我一直无法删除所有选项。
我一直在菜单教程和文档中寻找某种函数或方法 return 选项列表,这样我就可以找到长度并循环遍历索引以删除选项,但我什么也没找到。
我有一些问题:
- 有没有办法获取菜单中的选项列表?
- 有没有更简单的方法来删除菜单中的所有选项?
delete
方法可以给定一个范围的项。您可以为范围中的第一个项目传递 0
(零),为最后一个项目传递字符串 "end"
或 "last"
,以便删除菜单上的所有项目。
运行下面的例子,打开菜单select“清除”,然后再次打开菜单,你会看到所有的项目都被删除了。
import tkinter as tk
import random
root = tk.Tk()
menubar = tk.Menu(root)
root.configure(menu=menubar)
options_menu = tk.Menu(menubar)
menubar.add_cascade(label="Options", menu=options_menu)
for i in range(random.randint(5, 10)):
options_menu.add_command(label=f"Option #{i+1}")
def clear_menu():
options_menu.delete(0, "end")
options_menu.add_separator()
options_menu.add_command(label="clear", command=clear_menu)
root.mainloop()
I've been looking around in menu tutorials and documentation for some kind of function or method that would return a list of options, so that I could find the length and loop through the indices to delete the options, but I've found nothing.
您可以使用index
方法获取项目的数字索引。您可以通过 "end"
获取最后一项的索引。
last_menu_item = option_menu.index("end")
对于一个项目,我希望菜单中的选项根据另一个菜单的输入而改变。为此,我最初的计划是删除菜单中的所有选项并添加新选项以与其他菜单相对应;但是,我一直无法删除所有选项。
我一直在菜单教程和文档中寻找某种函数或方法 return 选项列表,这样我就可以找到长度并循环遍历索引以删除选项,但我什么也没找到。
我有一些问题:
- 有没有办法获取菜单中的选项列表?
- 有没有更简单的方法来删除菜单中的所有选项?
delete
方法可以给定一个范围的项。您可以为范围中的第一个项目传递 0
(零),为最后一个项目传递字符串 "end"
或 "last"
,以便删除菜单上的所有项目。
运行下面的例子,打开菜单select“清除”,然后再次打开菜单,你会看到所有的项目都被删除了。
import tkinter as tk
import random
root = tk.Tk()
menubar = tk.Menu(root)
root.configure(menu=menubar)
options_menu = tk.Menu(menubar)
menubar.add_cascade(label="Options", menu=options_menu)
for i in range(random.randint(5, 10)):
options_menu.add_command(label=f"Option #{i+1}")
def clear_menu():
options_menu.delete(0, "end")
options_menu.add_separator()
options_menu.add_command(label="clear", command=clear_menu)
root.mainloop()
I've been looking around in menu tutorials and documentation for some kind of function or method that would return a list of options, so that I could find the length and loop through the indices to delete the options, but I've found nothing.
您可以使用index
方法获取项目的数字索引。您可以通过 "end"
获取最后一项的索引。
last_menu_item = option_menu.index("end")