2 Ce module propose la classe TOOLTIP pour
3 mettre en oeuvre les bulles d'aide
9 def __init__(self,widget):
16 self.bindings.append(self.widget.bind("<Enter>", self._enter))
17 self.bindings.append(self.widget.bind("<Leave>", self._leave))
18 self.bindings.append(self.widget.bind("<ButtonPress>", self._leave))
19 # user overrideable settings
20 self.time = 1000 # milliseconds
21 self.relief = Tkinter.SOLID
22 self.justify = Tkinter.LEFT
28 def setText(self, text):
32 if self.bindings and self.widget:
33 self.widget.unbind("<Enter>", self.bindings[0])
34 self.widget.unbind("<Leave>", self.bindings[1])
35 self.widget.unbind("<ButtonPress>", self.bindings[2])
42 def _enter(self, *event):
43 after_cancel(self.timer)
44 self.timer = after(self.widget, self.time, self._showTip)
46 def _leave(self, *event):
47 after_cancel(self.timer)
53 self.tooltip.destroy()
54 destruct(self.tooltip)
58 if self.tooltip or not self.text:
60 c = self.widget.__class__
61 if c in (Tkinter.Button,):
62 if self.widget["state"] == Tkinter.DISABLED:
64 x = self.widget.winfo_rootx()
65 y = self.widget.winfo_rooty() + self.widget.winfo_height()
68 self.tooltip = Tkinter.Toplevel()
69 self.tooltip.wm_iconify()
70 self.tooltip.wm_overrideredirect(1)
71 self.tooltip.wm_protocol("WM_DELETE_WINDOW", self.destroy)
72 self.label = Tkinter.Label(self.tooltip, text=self.text,
73 relief=self.relief, justify=self.justify,
74 fg=self.fg, bg=self.bg, bd=1, takefocus=0)
75 self.label.pack(ipadx=1, ipady=1)
76 self.tooltip.wm_geometry("%+d%+d" % (x, y))
77 self.tooltip.wm_deiconify()