ValueError: too many values to unpack Tkinter Listbox

ValueError: too many values to unpack Tkinter Listbox

当使用 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,但我需要列表框自动刷新以便显示对字典的任何更改。

  1. itervalues(): Return 字典值的迭代器。

例如

>>> 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'>
>>> 
  1. items(): Return 字典的(键,值)对列表的副本。
  2. 列表项

例如

>>> d.items()
[('a', 1), ('b', 2)]
  1. iteritems(): Return 字典(键,值)对的迭代器。

例如

>>> for i, j in d.iteritems():
...   i , j
... 
('a', 1)
('b', 2)
>>> 

more details

mydict.itervalues() is an iterator over the values in mydict. If you want both the keys and the values, use mydict.iteritems():

for key, value in mydict.iteritems():
    recvDisplay.insert(tk.END, '{}, {}'.format(key, value))

注意:一个列表框只有一列。如果您希望多个列分别显示键和值,您将需要一个不同的小部件,例如 treectrl.MultiListbox,或者将两个 Listboxes 并排放置。