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
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 ?
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager