#-*- coding: utf -8 -*-
from tkinter import *
class CrearToolTip(object):
"""
Crear la ayuda para los objetos
"""
def __init__(self,elemento,texto='Info del objeto'):
self.espera = 500
self.largo = 180
self.objeto = elemento
self.texto = texto
self.objeto.bind("<Enter>",self.entrar)
self.objeto.bind("<Leave>",self.salir)
self.objeto.bind("<ButtonPress>",self.salir)
self.id = None
self.tw = None
def entrar(self,event=None):
self.asignar()
def salir(self,event=None):
self.liberar()
self.ocultar_tip()
def asignar(self):
self.liberar()
self.id = self.objeto.after(self.espera,self.mostrar_tip)
def liberar(self):
id = self.id
self.id = None
if id:
self.objeto.after_cancel(id)
def mostrar_tip(self,event=None ):
x = y = 0
x,y,cx,cy = self.objeto.bbox("insert")
x += self.objeto.winfo_rootx() + 25
y += self.objeto.winfo_rooty() + 20
self.tw = Toplevel(self.objeto)
self.tw.wm_overrideredirect(True)
self.tw.wm_geometry("+%d+%d"%(x,y))
label = Label(self.tw,text=self.texto,justify="left",
background = "white",relief="solid",borderwidth=1,
wraplength = self.largo)
label.pack(ipadx=1)
def ocultar_tip(self):
tw = self.tw
self.tw = None
if tw:
tw.destroy()
def main():
root = Tk()
root.geometry('300x200')
Obj1 = Label(root,text="Red",bg="red",fg="white")
obj2= Button(root,text="Boton")
CrearToolTip(Obj1,"Esto es un label")
CrearToolTip(obj2,"Esto es un botón")
Obj1.pack(fill=X)
obj2.pack(fill=X)
mainloop()
if __name__=="__main__":
main()