Как создать гиперссылку с меткой в 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()