Почему привязка <<ListboxSelect>> в Tkinter Python запускается внезапно при двойном щелчке на виджете Entry? - PullRequest
0 голосов
/ 02 января 2019

В рамках большей части кода я обнаружил странность с привязками списков 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 голосов
/ 02 января 2019

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

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

...