【问题标题】:ValueError: too many values to unpack Tkinter ListboxValueError:太多值无法解压 Tkinter 列表框
【发布时间】:2015-04-27 13:30:06
【问题描述】:

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

【问题讨论】:

    标签: python dictionary tkinter listbox


    【解决方案1】:

    mydict.itervalues()mydict 中值的迭代器。如果您需要键和值,请使用mydict.iteritems()

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

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

    【讨论】:

    • 差不多了,但是只输出值而不是键,这是因为你不能将两个变量输出到列表框中的同一行吗?
    【解决方案2】:
    1. itervalues():返回字典值的迭代器。

    例如

    >>> 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():返回字典的(键、值)对列表的副本。
    2. 列表项

    例如

    >>> d.items()
    [('a', 1), ('b', 2)]
    
    1. iteritems():在字典的(键,值)对上返回一个迭代器。

    例如

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

    more details

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 2015-12-20
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2018-06-01
      相关资源
      最近更新 更多