有没有一种方法可以用ttk在Python中的组合框中显示文本值,而不是实际的内部值?

jaql4c8m  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(120)

目前,我知道我们可以把值如下,所选的显示值将存储在textvariable中给定的变量中。

ttk.Combobox(parent,
             ...
             textvariable=ttk_variable,
             values=['value1', 'value2', 'value3'],
             ...)

我在寻找能把我们看到的价值转化为内在价值的东西。

ttk.Combobox(parent,
             ...
             textvariable=ttk_variable,
             values=['text1', 'text2', 'text3'],
             ...)

当我们选择'text1'时,我们在ttk_variable中得到的值将是value1,依此类推。我想让它可以设置不同语言的文本,以启用本地化换句话说。
ttk.Combobox中是否存在这种情况?
谢谢你!

5ktev3wc

5ktev3wc1#

您可以尝试使用元组列表配置Combobox的values选项,其中每个元组包含显示文本和实际值。示例:

values = [
    ("text1", "value1"),
    ("text2", "value2"),
    ("text3", "value3"),
]

编辑:

val = {
    "text1": "value1",
    "text2": "value2",
    "text3": "value3"
}

def show_value(event):
   selected_index = combo.current()
   selected_value = combo['values'][selected_index]
   ttk_variable.set(val[selected_value])
   print(ttk_variable.get())

...

ttk_variable = StringVar()
combo = ttk.Combobox(
    ...
    values=list(val.keys())
    ...
)
combo.bind("<<ComboboxSelected>>", show_value)

相关问题