Python GUI 生成器(页面)设置组合框选项

Python GUI builder (Page) setup combobox options

您好,我尝试使用 ttk 库在 python 中配置组合框,但不幸的是它不允许我添加值

self.qType = ttk.Combobox(top)
    self.qType.place(relx=0.69, rely=0.09, relheight=0.04, relwidth=0.22)
    self.qType.configure(textvariable=dnsGui_support.combobox)
    self.qType.configure(width=137)
    self.qType.configure(takefocus="")

dnsGui_support.combobox 在单独的文件中

global combobox
combobox = StringVar("")
combobox.set("AA")

我试过组合框['values'] = ('AA', 'MX') 但这给了我错误 stringvar instance has no attribute setitem 如果我 运行 我的程序没有设置它的值 运行 很好

问题是您在错误的对象上调用它。

您将 StringVar 对象命名为 combobox,将 Combobox 对象命名为 qtype,这有点令人困惑。但是 Combobox 对象具有您可以设置的字符串列表。 StringVar 只有一个字符串——在本例中,是 Combobox.

的当前选择

错误消息可能有点不透明。它说 StringVar instance has no attribute __setitem__ 的原因是 x[key] = value 实际上调用了 x.__setitem__(key, value),所以如果 x 的类型(StringVar 在你的情况下)没有这样的方法,那就是错误说明了什么。

我不知道你是否可以使用 dict-style 语法看到 Combobox 的值(对它的支持是一个很大的偶然......)。如果它不起作用,您可能需要 configure 它,甚至可能 configure 底层 Listbox。但是,无论哪种方式,它都是您需要操作的 Combobox

self.qType = ttk.Combobox(top)
self.qType.place(relx=0.69, rely=0.09, relheight=0.04, relwidth=0.22)
self.value_list = ['MX', 'AA', 'CNAME']
self.qType.configure(values=self.value_list)
self.qType.configure(textvariable=dnsGui_support.combobox)
self.qType.configure(width=137)
self.qType.configure(takefocus="")