当编写一个简单的程序,使用Tkinter将字典中的值和键输出到python中的列表框时,我收到以下错误:
for key, value in mydict.itervalues():
ValueError: too many values to unpack
请参阅下面的代码:
#!/usr/bin/python
import Tkinter as tk
mydict = {"0x00063":"6F 7D 9E 0E FF FF FF FF",
"0x00061":"FF FF FF FF FF FF FF FF",
"0x00062":"AA AA AA AA AA AA AA AA",
"0x00064":"00 00 00 00 00 00 00 00"}
guiMain = tk.Tk()
recvDisplay = tk.Listbox(guiMain)
for key, value in mydict.itervalues():
recvDisplay.insert(key, value)
recvButton = tk.Button(guiMain, text="Start Receive")
tranDisplay = tk.Listbox(guiMain)
tranButton = tk.Button(guiMain, text="Start Transmit")
recvDisplay.pack()
recvButton.pack()
tranDisplay.pack()
tranButton.pack()
guiMain.mainloop()
我需要能够将字典中的值和键输出到列表框recvDisplay
,但我需要列表框自动刷新,以便显示对字典的任何更改。
答案 0 :(得分:3)
mydict.itervalues()
是mydict
中值的迭代器。如果您想要密钥和值,请使用mydict.iteritems()
:
for key, value in mydict.iteritems():
recvDisplay.insert(tk.END, '{}, {}'.format(key, value))
注意:列表框只有一列。如果您希望多列分别显示键和值,则需要使用其他窗口小部件,例如treectrl.MultiListbox,或者并排放置两个Listboxes
。
答案 1 :(得分:1)
itervalues()
:在字典的值上返回一个迭代器。e.g。
>>> d = {"a":1, "b":2}
>>> d.itervalues()
<dictionary-valueiterator object at 0xb7201144>
>>> for i in d.itervalues():
... print i, type(i)
...
1 <type 'int'>
2 <type 'int'>
>>>
items()
:返回字典的(键,值)对列表的副本。e.g。
>>> d.items()
[('a', 1), ('b', 2)]
iteritems()
:在字典的(键,值)对上返回一个迭代器。e.g。
>>> for i, j in d.iteritems():
... i , j
...
('a', 1)
('b', 2)
>>>