双击Entry小部件时,为什么Python的Tkinter中的<< listboxselect >>绑定会虚假地触发?

时间:2019-01-02 05:17:08

标签: python tkinter listbox tkinter-entry event-binding

作为一大堆代码的一部分,我发现tkinter列表框绑定很奇怪。以下代码提供了该问题的细分。将列表框与“ listboxselected”绑定时,在该列表框中选择一个项目,然后双击“ Entry”,将触发一次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()

1 个答案:

答案 0 :(得分:1)

我无法在OSX上重复此操作,但是我的猜测是,当您双击条目时,将选择条目中的文本。选择文本后(即使没有选择),也会取消选择列表框中的项目。取消选择会触发绑定。

如果您希望同时在列表框和条目中都有内容,请在列表框中设置exportselection=False