Почему привязка << ListboxSelect >> в Python Tkinter запускается внезапно при двойном щелчке на виджете Entry?
В рамках большей части кода я обнаружил странность с привязками списков 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 ответ
Я не могу продублировать это на OSX, но я предполагаю, что при двойном щелчке в записи текст в записи выделяется. Когда текст выделен (даже если нечего выбирать), элемент в списке отменяется. Отмена выбора запускает привязку.
Если вы хотите иметь возможность выбрать что-то и в списке, и в записи, установите exportselection=False
в списке.