Saltar al contenido

¿Cómo crear un hipervínculo con una etiqueta en Tkinter?

Esta es la contestación más acertada que te podemos aportar, pero estúdiala detenidamente y valora si se puede adaptar a tu proyecto.

Solución:

Atar la etiqueta a "" evento. Cuando se levanta el callback se ejecuta dando como resultado que se abra una nueva página en su navegador predeterminado.

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("", lambda e: callback("http://www.google.com"))

link2 = Label(root, text="Ecosia Hyperlink", fg="blue", cursor="hand2")
link2.pack()
link2.bind("", lambda e: callback("http://www.ecosia.org"))

root.mainloop()

También puede abrir archivos cambiando la devolución de llamada a:

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

Alternativamente, si tiene varias etiquetas y desea una función para todas. Eso es asumiendo que tienes el enlace como el texto.

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("", callback)
root.mainloop()

Hay un módulo en PyPi llamado tkhtmlview (pip install tkhtmlview) que admite HTML en tkinter. Solo admite algunas etiquetas, pero en la página dice que tiene soporte completo para etiquetas (etiquetas de anclaje para hipervínculos) y admite href attribute. Requiere Python 3.4 o posterior con soporte tcl/tk (tkinter) y el módulo Pillow 5.3.0. Todavía no probé la etiqueta, pero probé el módulo en general y funciona.

Como ejemplo:

import tkinter as tk
from tkhtmlview import HTMLLabel

root = tk.Tk()
html_label=HTMLLabel(root, html=' Google Hyperlink ')
html_label.pack()
root.mainloop()

Agradecemos que desees asistir nuestro trabajo dejando un comentario y valorándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *