Проблема с tag_bind() в текстовом виджете Text() tkinter

Хотел добавить HTML теги в виджет Text(). Проблема в строчке self.text.tag_bind("link", "", self.open_link) с text_bind(). Код брал отсюда.

import tkinter as tk
import webbrowser

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Демо HTML тегов")
        self.text = tk.Text(self, width=50, height=10)
        self.btn_link = tk.Button(self, text="Добавить ссылку",
                                  command=self.add_hyperlink)

        self.text.tag_config("link", foreground="blue", underline=1)
        self.text.tag_bind("link", "", self.open_link)
        self.text.tag_bind("link", "",
                           lambda _: self.text.config(cursor="hand2"))
        self.text.tag_bind("link", "",
                           lambda e: self.text.config(cursor=""))

        self.text.pack()
        self.btn_link.pack(expand=True)

    def add_hyperlink(self):
        selection = self.text.tag_ranges(tk.SEL)
        if selection:
            self.text.tag_add("link", *selection)

    def open_link(self, event):
        position = "@{},{} + 1c".format(event.x, event.y)
        index = self.text.index(position)
        prevrange = self.text.tag_prevrange("link", index)
        url = self.text.get(*prevrange)
        webbrowser.open(url)

if __name__ == "__main__":
    app = App()
    app.mainloop()

Выдает ошибку:

self.tk.call(what + (sequence, cmd))
_tkinter.TclError: no events specified in binding

Ответы (1 шт):

Автор решения: insolor

Вторым параметром для tag_bind нужно передавать событие, к которому привязывается указанная функция/метод/лямбда:

self.text.tag_bind("link", "<Button-1>", self.open_link)  # Клик левой клавишей мыши
self.text.tag_bind("link", "<Enter>",  # Наведение курсора мыши на объект ("hower")
                   lambda _: self.text.config(cursor="hand2"))
self.text.tag_bind("link", "<Leave>",  # Смещение курсора с объекта 
                   lambda e: self.text.config(cursor=""))

В приведенном источнике имена событий куда-то пропали, возможно имеет смысл сообщить об этом автору статьи.

→ Ссылка