diff --git a/HLTest.py b/HLTest.py new file mode 100644 index 0000000..3530b2c --- /dev/null +++ b/HLTest.py @@ -0,0 +1,29 @@ +import tkHyperlinkManager +import webbrowser +from tkinter import * + +root = Tk() +root.title("hyperlink-1") + +text = Text(root) +text.pack() + +hyperlink = tkHyperlinkManager.HyperlinkManager(text) + +def click1(): + print ("click 1") + url = "https://www.google.co.uk" + webbrowser.open(url, new=2) + +text.insert(INSERT, "this is a ") +text.insert(INSERT, "link", hyperlink.add(click1)) +text.insert(INSERT, "\n\n") + +def click2(): + print ("click 2") + +text.insert(INSERT, "this is another ") +text.insert(INSERT, "link", hyperlink.add(click2)) +text.insert(INSERT, "\n\n") + +mainloop() diff --git a/tkHyperlinkManager.py b/tkHyperlinkManager.py new file mode 100644 index 0000000..edc0feb --- /dev/null +++ b/tkHyperlinkManager.py @@ -0,0 +1,43 @@ +######################################################################### +# External code to allow insertion of hyperlinks in tkinter text widget # +# Creator: Fredik Lundh # +# Source: http://effbot.org/zone/tkinter-text-hyperlink.htm # +######################################################################### + +from tkinter import * + +class HyperlinkManager: + + def __init__(self, text): + + self.text = text + + self.text.tag_config("hyper", foreground="blue", 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 + + 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