[英]How do I set the values of tkinter combobox from dictionary keys
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)
我試圖將每個字典鍵用作組合框中的一個選項,但是當我運行我的腳本時,每個單詞都成為一個單獨的選項。 如果有人能告訴我我做錯了什么,我將不勝感激?
你非常接近!
combobox_values = "\n".join(my_dict.keys())
應該
combobox_values = my_dict.keys()
通過使用join ,您可以從字典中獲取所有鍵,然后將它們放在一個字符串中! 當Tkinter嘗試描繪您的字符串時,它會確定空格與分解項目的換行符一樣好。
實際上追蹤引擎蓋下使用的描述有點棘手。 官方文檔沒有提到
檢查源代碼Combobox
繼承自Entry
小部件,但兩者都對底層tcl進行原始調用。 新墨西哥州 (通常是聲譽良好的)聲稱價值必須在列表中,但顯然字符串也有效。 由於字符串和列表在python中非常相似 ,故障 - 慢速方法ttk看似合適......但它沒有回答問題......
事實上,這是一個有趣的游戲:嘗試打破構造函數。 傳遞一個隨機數? 以下所有工作
ttk.Combobox(root, values=12345)
class Foo:pass
ttk.Combobox(root, values=Foo())
ttk.Combobox(root, values=Foo)
在進一步調查之后,最后的python調用發生在Tkinter.py
第2058 Tkinter.py
(或者左右,依賴於實現)。 如果你真的很好奇,你可以從tcl文檔追溯到他們詳細的小部件 ,特別是“保留額外的項目數據”一章,看看這些事情是如何以及為什么發生的
在后兩種情況下,顯示方法清楚地表明,輸入被包裝為自己的字符串表示(與新墨西哥的解釋一致),但基本方法仍然是回避的
嘗試combobox_values = list(my_dict.keys())
因為我沒有得到 python 3.8 的預期結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.