from tkinter import Text, CURRENT # Source: https://web.archive.org/web/20200806215420/http://effbot.org/zone/tkinter-text-hyperlink.htm # and https://stackoverflow.com/questions/49353034/python-tkinter-have-displayed-text-as-hyperlink class HyperlinkManager: def __init__(self, text): self.text = text self.text.tag_config("hyper", foreground="#3B8ED0", underline=1) self.text.tag_bind("hyper", "", self._enter) self.text.tag_bind("hyper", "", self._leave) self.text.tag_bind("hyper", "", self._click) self.reset() def reset(self): self.links = {} def add(self, action): # add an action to the manager. returns tags to use in # associated text widget tag = "hyper-%d" % len(self.links) self.links[tag] = action return ["hyper", tag] # changed: return a list instead of a tuple def _enter(self, event): self.text.config(cursor="hand2") def _leave(self, event): self.text.config(cursor="") def _click(self, event): for tag in self.text.tag_names(CURRENT): if tag[:6] == "hyper-": self.links[tag]() return