Tkinter Text: вызов пользовательской функции со словом, выбранным двойным щелчком
Когда пользователь дважды щелкает слово в виджете "Текст", вызывается некоторый внутренний обратный вызов, что приводит к выбору слова. Я хочу, чтобы по этому слову было выполнено какое-то дополнительное задание. Как я могу это сделать? Наивная идея состояла в том, чтобы связать мой собственный обратный вызов с двойным щелчком. Это не сработало из-за неправильного приоритета: мой обратный вызов выполнялся первым, до того, как слово было выбрано, а обратный вызов текста вызывался после. Как я могу решить это?
Идея состоит в том, чтобы получить дескриптор существующего обратного вызова и использовать его после:
actual_callback = **<how can I get this handle?>**
text.bind("<Double-Button-1>", my_callback)
тогда мой обратный вызов прямо написал бы следующее:
def my_callback(event):
actual_callback(event) # this will select the word
w = text.selection_get()
do_something(w)
Пожалуйста, помогите завершить это таким образом, или не стесняйтесь предложить лучший способ достижения моей первоначальной цели.
1 ответ
Простой ответ - просто подождать, прежде чем запустить обратный вызов.
text.bind("<Double-Button-1>", lambda e: text.after(2, my_callback, e)) # wait 2 ms before running callback