import tkinter as tk
from tkinter import messagebox
class CreateToolTip(object):
def __init__(self, widget, text='widget info'):
self.waittime = 500 #miliseconds
self.wraplength = 180 #pixels
self.widget = widget
self.text = text
self.widget.bind("<Enter>", self.enter)
self.widget.bind("<Leave>", self.leave)
self.widget.bind("<ButtonPress>", self.leave)
self.id = None
self.tw = None
def enter(self, event=None):
self.schedule()
def leave(self, event=None):
self.unschedule()
self.hidetip()
def schedule(self):
self.unschedule()
self.id = self.widget.after(self.waittime, self.showtip)
def unschedule(self):
id = self.id
self.id = None
if id:
self.widget.after_cancel(id)
def showtip(self, event=None):
x = y = 0
x, y, cx, cy = self.widget.bbox("insert")
x += self.widget.winfo_rootx() + 25
y += self.widget.winfo_rooty() + 20
self.tw = tk.Toplevel(self.widget)
self.tw.wm_overrideredirect(True)
self.tw.wm_geometry("+%d+%d" % (x, y))
label = tk.Label(self.tw, text=self.text, justify='left',
background="#ffffff", relief='solid', borderwidth=1,
wraplength = self.wraplength)
label.pack(ipadx=1)
def hidetip(self):
tw = self.tw
self.tw= None
if tw:
tw.destroy()
if __name__ == '__main__':
root = tk.Tk()
def caixa1():
tk.messagebox.showinfo("Saudação de Entrada", "Seja Bem-Vindo!!")
def caixa2():
tk.messagebox.showinfo("Saudação de Saída", "Adeus e até à próxima!!")
btn1 = tk.Button(root, text="Entrada",command=caixa1)
btn1.pack(padx=10, pady=5)
button1_ttp = CreateToolTip(btn1,'Olá a todos!')
btn2 = tk.Button(root, text="Saída",command=caixa2)
btn2.pack(padx=10, pady=5)
button2_ttp = CreateToolTip(btn2,"Adeus a todos!!!!")
root.mainloop()