Как создать гиперссылку с меткой в ​​Tkinter?

Как создать гиперссылку с помощью Label в Tkinter?

Быстрый поиск не показал, как это сделать. Вместо этого существовали только решения для создания гиперссылки в виджете Text.

Ответ 1

Привязать метку к событию "<Button-1>". Когда оно поднято, выполняется callback что приводит к открытию новой страницы в браузере по умолчанию.

from tkinter import *
import webbrowser

def 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()

Вы также можете открыть файлы, изменив функцию обратного вызова на:

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

Ответ 2

Альтернативно, если у вас есть несколько меток и нужна одна функция для всех. Это предполагает, что у вас есть ссылка в виде текста

import tkinter as tk
import webbrowser

def 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()

Ответ 3

from tkinter import *
import webbrowser
def hello(link):
    webbrowser.open_new(link)    
app = Tk()
app.title('Hyperlink Process')
label1 = Button(app, text = 'See a video',command = lambda : hello("https://examscuriosity.com"))
label1.pack()
app.mainloop()