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
Другие вопросы по тегам