繁体   English   中英

无法从字典中填充 python tkinter Combobox

[英]Unable to populate python tkinter Combobox from Dictionary

我仍在研究同一个程序,并且取得了一些进展。 该应用程序可以找到字典,但所有信息都是不稳定的。 这是我到目前为止所得到的图片。

摇摇欲坠的组合框

我是 Python 新手,也是编程新手。 如果有人可以帮助我解决代码的任何部分,我愿意倾听和学习! 到目前为止,这是我的代码。

from tkinter import *
from tkinter import ttk


#Experience Per Level Dictionary
import csv
exptable = csv.DictReader(open('C:/Users/LemDog/Desktop/WinPython 3.5.1.2/python-3.5.1.amd64/Scripts/Ragnarok Stuff/Ragnarok Base Level.csv'))

result = {}
for row in exptable:  # should actually be called `row`
    if row['Current Level'] not in result:
        result[row['Current Level']] = row['Total EXP']


#All the math behind the GetKills Button



#Creates Tkinter Window
root = Tk()
root.title("How many Kills?")
mainframe = ttk.Frame(root, padding="3 3 70 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

expper = StringVar()
currentlevel = StringVar()
desiredlevel = StringVar()
killamount = StringVar()


#OptionMenu From Dictionary
combobox = ttk.Combobox(mainframe)
combobox.grid(column=3, row=1)

combobox.set(result)

for item in [result]:
    combobox.insert(END, result)

#Creats Current Level Text Entry Field
currentlevel = ttk.Entry(mainframe, width=10, textvariable=currentlevel)
currentlevel.grid(column=2, row=1, sticky=(W, E))

#Creates Exp Per Kill Text Entry Field
expper_entry = ttk.Entry(mainframe, width=10, textvariable=expper)
expper_entry.grid(column=2, row=2, sticky=(W, E))

#Creats Desired Level Text Entry Field
desiredlevel_entry = ttk.Entry(mainframe, width = 10, textvariable=desiredlevel)
desiredlevel_entry.grid(column=2, row=3, sticky=(W, E))


#Creates Button and Print Label for How Many Kills.
ttk.Label(mainframe, textvariable=killamount).grid(column=2, row=4, sticky=(W, E))
ttk.Button(mainframe, text="How many!?", command=getkills).grid(column=1, row=4, sticky=W)

ttk.Label(mainframe, text="Current Level").grid(column=1, row=1, sticky=W)
ttk.Label(mainframe, text="Experience Per Kill").grid(column=1, row=2, sticky=E)
ttk.Label(mainframe, text="Desired Level").grid(column=1, row=3, sticky=W)

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
root.mainloop()

任何帮助都表示赞赏! 感谢您提前尝试!

似乎您将result字典的整个__repr__设置为所选项目,而且您的数据似乎在列表中格式不正确。

尝试删除.setcombobox.insert for循环并使用:

combobox.configure(values=list(result.values())) 
# or result.keys() if that's your intent

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM