Tkinter - 使用列表变量填充 OptionMenu 的选项

Tkinter - populate OptionMenu's options with list variables

所以我有以下列表:

containers = []
lids = []
wicks = []
labels = []
misc = []
inventory = []

class Item(object):
    def __init__(self, desc, name, amount):
        self.desc = desc
        self.name = name
        self.amount = amount

a1 = [x.getName() for x in containers]
a2 = [x.getName() for x in lids]
a3 = [x.getName() for x in wicks]
a4 = [x.getName() for x in labels]
a5 = [x.getName() for x in misc]
items = [a1, a2, a3, a4, a5]

我想做的是用列表 items

中的所有值填充 type_selector 的选项

以下是我根据目前在网上找到的内容得出的结论:

add_amount_selector = StringVar()
type_selector = OptionMenu(mainframe, add_amount_selector, *items)

然而,实际情况是项目的所有值都合并到一个选项中,即:

{name1}{name2}{name3}

而不是:

{name1}
{name2}
{name3}

不确定这里的问题是什么或如何更改它。

还有一种方法可以在不显示大括号的情况下使用列表变量填充选项的菜单 {}

编辑

好的,我刚刚做了以下操作:

z = []
z.extend(a1)
z.extend(a2)
z.extend(a3)
z.extend(a4)
z.extend(a5)

items = z

它现在似乎可以正常工作了。谢谢!

问题是您为选项菜单提供了一个列表列表。 OptionMenus 不是分层的。每个参数都应该是一个字符串,而不是一个列表。当你给它一个列表时,OptionMenu 不知道你想如何格式化列表,所以你得到它自己的内部格式。

您需要将所有列表合并为一个列表,然后再将其传递给 OptionMenu。