作为更大的代码的一部分,我发现了tkinter列表框绑定的一个奇怪之处。下面的代码给出了问题的细分。当将列表框与"listboxselected"绑定时,选择该列表框中的项,然后双击条目,列表框选定事件将触发一次。
我已经在python 3.3.2,3.6.3和3.7.1中对此进行了测试。该错误仅发生在后两个版本中。我已经检查了文档,但找不到导致此问题的任何更新。有没有人知道为什么会发生这种行为?
from tkinter import Tk, Listbox, Entry, Button
from functools import partial
root = Tk()
myList = Listbox(root)
myList.insert("end", "spam", "eggs", "chips")
myList.pack()
myList.bind("<<ListboxSelect>>", partial(print))
myEntry = Entry(root)
myEntry.pack()
我无法在 OSX 上复制它,但我的猜测是,当您双击条目时,条目中的文本会被选中。选择文本后(即使没有要选择的内容),列表框中的项将被取消选中。取消选择将触发绑定。
如果希望能够同时选中列表框和条目中的某些内容,请在列表框中设置exportselection=False
。