Почему привязка ‹‹ListboxSelect›› в Python Tkinter срабатывает ложно при двойном щелчке виджета Entry?

В рамках большого блока кода я обнаружил странность с привязками списка tkinter. Приведенный ниже код дает разбивку проблемы. При привязке списка с помощью «listboxselected», выборе элемента в этом списке, а затем двойном щелчке левой кнопкой мыши на записи, событие 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()

person D Hall    schedule 02.01.2019    source источник


Ответы (1)


Я не могу продублировать это в OSX, но я предполагаю, что когда вы дважды щелкаете запись, текст в записи выделяется. Когда текст выделен (даже если выбирать нечего), элемент в списке отменяется. Отмена выбора запускает привязку.

Если вы хотите, чтобы что-то было выбрано как в списке, так и в записи, установите exportselection=False в списке.

person Bryan Oakley    schedule 02.01.2019
comment
Это в точку спасибо! Некоторое время ломал голову. - person D Hall; 02.01.2019