Bonjour,
Je cherche à créer une info bulle lorsque ma souris se déplace sur un objet
Est-ce que quelqu'un aurait un script là-dessus.
Merci
Version imprimable
Bonjour,
Je cherche à créer une info bulle lorsque ma souris se déplace sur un objet
Est-ce que quelqu'un aurait un script là-dessus.
Merci
il faut utiliser la bibliothèque Tix
http://python.developpez.com/faq/?pa...n#TixInfoBulle
Ou Pmw, il y a le widget "Balloon".
http://doc.async.com.br/PMW/Balloon.html
Oui mais je souhaite le faire en pur TKInter.
Est-ce au moins possible ?
A ma connaissance, non.
Je pense que c'est possible si c'est toujours sur le même type d'objet que tu veux ton info-bulle (ex Button).
Tu peux créer une classe dérivée de Button qui affiche un Toplevel lorsque tu laisse la souris dessus ...
Il est quand même plus simple d'utiliser Tix...
Voici une classe "infobulle"
A +Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 # -*- coding: ISO-8859-1 -*- import Tkinter as tk class infoBulle(tk.Toplevel): def __init__(self,parent=None,texte='',temps=1000): tk.Toplevel.__init__(self,parent,bd=1,bg='black') self.tps=temps self.parent=parent self.withdraw() self.overrideredirect(1) self.transient() l=tk.Label(self,text=texte,bg="yellow",justify='left') l.update_idletasks() l.pack() l.update_idletasks() self.tipwidth = l.winfo_width() self.tipheight = l.winfo_height() self.parent.bind('<Enter>',self.delai) self.parent.bind('<Button-1>',self.efface) self.parent.bind('<Leave>',self.efface) def delai(self,event): self.action=self.parent.after(self.tps,self.affiche) def affiche(self): self.update_idletasks() posX = self.parent.winfo_rootx()+self.parent.winfo_width() posY = self.parent.winfo_rooty()+self.parent.winfo_height() if posX + self.tipwidth > self.winfo_screenwidth(): posX = posX-self.winfo_width()-self.tipwidth if posY + self.tipheight > self.winfo_screenheight(): posY = posY-self.winfo_height()-self.tipheight #~ print posX,print posY self.geometry('+%d+%d'%(posX,posY)) self.deiconify() def efface(self,event): self.withdraw() self.parent.after_cancel(self.action) if __name__ == '__main__': root = tk.Tk() lab1=tk.Label(root,text='Infobulle 1') lab1.pack() lab2=tk.Label(root,text='Infobulle 2') lab2.pack() i1 = infoBulle(parent=lab1,texte="Infobulle 1") i2= infoBulle(parent=lab2,texte="Infobulle 2") root.mainloop()
Après test, ça ressemble à ce que je désire.
Il ne me reste plus qu'à essayer de comprendre ce qui se passe.
Merci beaucoup
Bonjour,
Je te propose de consulter ce tuto youtube qui décrit les étapes de création d'une info bulle en pur tkinter : https://www.youtube.com/watch?v=gvdGAQMK-Gs&t=45s