如何从字典键设置tkinter组合框的值

2024-05-17 14:41:10 发布

您现在位置:Python中文网/ 问答频道 /正文

root = Tk()
my_dict = {'Drosophila melanogaster':1
           'Danio rerio': 2,
           'Caenorhabditis elegans':3,
           'Rattus norvegicus': 4,
           'Mus musculus': 5,
           'Homo sapiens': 6,
           }
combobox_values = "\n".join(my_dict.keys())
organism = ttk.Combobox(root, values=combobox_values) 
organism.grid(row=2, column=0, sticky="w", padx=2, pady=2)

我试图使用每个字典键作为组合框中的一个选项,但是当我运行脚本时,每个单词都变成了一个单独的选项。 如果有人能告诉我我做错了什么,我会非常感激的?在


Tags: my选项rootdicttkvaluesorganismelegans
1条回答
网友
1楼 · 发布于 2024-05-17 14:41:10

你很亲密!在

combobox_values = "\n".join(my_dict.keys())

应该是

^{pr2}$

通过使用join,可以从字典中获取所有键,然后将它们放入一个字符串中!当Tkinter试图勾勒出字符串时,它决定空格与分解项的换行符一样好。在


要真正找到引擎盖下的轮廓线有点棘手。The official docs don't mention

检查源代码Combobox继承自Entry小部件,但两者都对底层tcl进行原始调用。New Mexico(通常是有信誉的)声称这些值需要在列表中,但显然字符串也可以。由于strings and lists are very similar in python,ttk采用的失败-缓慢方法似乎是合适的。。。但它不能回答这个问题。。。在

事实上,这里有一个有趣的游戏:尝试破坏构造函数。传递一个随机数?以下所有工作

ttk.Combobox(root, values=12345) 
class Foo:pass
ttk.Combobox(root, values=Foo())
ttk.Combobox(root, values=Foo)

在进一步研究之后,最后一个python调用发生在Tkinter.py的第2058行(或者说,取决于实现)。如果你真的很好奇,你可以从tcl docs到{a6},特别是“保留额外项目数据”一章,看看这些事情是如何发生的,为什么会这样

在后两种方法中,display方法清楚地表明,输入被包装成自己的字符串表示(与新墨西哥州的解释一致),但是底层方法仍然是回避的

相关问题 更多 >