How to create a hyperlink with a Label in Tkinter? How to create a hyperlink with a Label in Tkinter? tkinter tkinter

How to create a hyperlink with a Label in Tkinter?


Bind the label to "<Button-1>" event. When it is raised the callback is executed resulting in a new page opening in your default browser.

from tkinter import *import webbrowserdef callback(url):    webbrowser.open_new(url)root = Tk()link1 = Label(root, text="Google Hyperlink", fg="blue", cursor="hand2")link1.pack()link1.bind("<Button-1>", lambda e: callback("http://www.google.com"))link2 = Label(root, text="Ecosia Hyperlink", fg="blue", cursor="hand2")link2.pack()link2.bind("<Button-1>", lambda e: callback("http://www.ecosia.org"))root.mainloop()

You can also open files by changing the callback to:

webbrowser.open_new(r"file://c:\test\test.csv")


Alternatively if you have multiple labels and want the one function for all. That is assuming you have the link as the text

import tkinter as tkimport webbrowserdef callback(event):    webbrowser.open_new(event.widget.cget("text"))root = tk.Tk()lbl = tk.Label(root, text=r"http://www.google.com", fg="blue", cursor="hand2")lbl.pack()lbl.bind("<Button-1>", callback)root.mainloop()


There is a module on PyPi called tkhtmlview (pip install tkhtmlview) that supports HTML in tkinter. It only supports some tags, but on the page, it says that it has full support fro tags (anchor tags for hyperlinks), and supports the href attribute. It requires Python 3.4 or later with tcl/tk (tkinter) support and the Pillow 5.3.0 module. I haven't tried the tag yet, but I tried the module in general and it works.

As an example:

import tkinter as tkfrom tkhtmlview import HTMLLabelroot = tk.Tk()html_label=HTMLLabel(root, html='<a href="http://www.google.com"> Google Hyperlink </a>')html_label.pack()root.mainloop()