Ваша привязка происходит до привязки по умолчанию.Таким образом, выбор еще не существует, когда ваша привязка срабатывает.Поскольку ваша привязка пытается получить выбор, она завершается с ошибкой, которую вы видите.
Вам нужно будет организовать привязку, чтобы она произошла после привязок класса.Дешевый взлом состоит в том, чтобы использовать after
для выполнения вашего кода, когда у привязок по умолчанию есть шанс сработать.Или вы можете использовать функцию bindtag
, чтобы убедиться, что привязка срабатывает после привязок по умолчанию.
Вторая проблема заключается в том, что вы не очищаете старый выбор перед установкой нового.Вы хотите сделать tag_remove
, чтобы сначала удалить существующий выбор.В противном случае запятая (если она была каким-то образом выбрана) останется выделенной, поскольку все, что вы делаете, - это повторно применяете тег к тексту, который уже имеет тег.
Однако двойной щелчок обычно не фиксирует запятую, поэтому я не совсем понимаю смысл вашего кода.По крайней мере, когда я тестирую его на OSX, он не включает запятую.