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

时间:2016-11-24 00:01:14

标签: types tkinter selector

所以我有以下列表:

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]

我要做的是使用列表type_selector

中的所有值填充items个选项

根据我到目前为止在网上找到的内容,我的内容是:

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

现在似乎正在运作。谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您正在为选项菜单提供列表清单。 OptionMenus不是分层的。每个参数都应该是一个字符串,而不是一个列表。当您给它一个列表时,OptionMenu不知道您希望如何格式化列表,因此您可以获得自己的内部格式。

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