Bonjour,

je me suis lancé il y a peu, grâce d'ailleurs à l'excellent livre de M Swinnen, et ma question sera sans doute évidente pour nombre d'entre vous : tant mieux!

Je souhaite donc créer un bouton que je peux cliquer, et dans lequel je peux inscire le texte que je veux. voici mon code :

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
from Tkinter import *
 
class BoutonClik(Frame):
    """Definit un bouton cliquable"""
    def __init__(self , boss = None, commande = '<Control-E>',larg = 0, haut = 5, couleur = 'yellow', bande = 3 , texte = ' Cliquez ici !', couleurmot = 'navy'):
 
        Frame.__init__(self)
 
        self.haut,self.larg=haut,larg
        # si seule une hauteur est rentree, le bouton sera carre
        # sinon, on aura un rectangle 
        if self.larg == 0:
            self.larg = 2*self.haut   
 
        self.lbl = Label(self, width = self.larg, height = self.haut ,bd = bande, text = texte, bg= couleur, relief = RAISED, fg= couleurmot)
        self.lbl.pack()
        self.lbl.bind("<Button-1>", self.action)
        self.lbl.bind("<Button1-ButtonRelease>",self.retour)
        self.commande=commande
 
    def action(self,event):
        self.lbl.configure(relief = SUNKEN)
        self.lbl.pack()
 
    def retour(self,event):
        self.lbl.configure(relief = RAISED)
        self.lbl.pack()
        event_generate(self.commande)
 
 
if __name__== '__main__':
    fen1=Tk()
    fr=Frame(fen1,bg='brown', height =200, width = 200)
    fr.pack()
    fr2=Frame(fen1,bg='yellow', height =200, width = 200)
    fr2.pack()
    BoutonClik(fr).pack(padx=5,pady=5)
    BoutonClik(fr2, couleur = 'red', couleurmot = 'yellow', bande = 5, larg = 17, haut = 6).pack(padx=5,pady=5)
    fen1.mainloop()
Mon premier probleme apparait clairement dans le test mis en place à la fin :
le bouton créé ne veut pas s'intégrer à la frame maitresse que je créé dans le test

Mon second probleme : j'aimerais que mon bouton puisse réaliser une commande mise en argument. Cependant comme ce module ne connait pas le nom de la commande à l'avance, alors je me suis dit qu'il etait plus simple de générer un evenement (en rouge) recuperable dans le prgm maitre
mais ca ne marche pas non plus
quelle est la bonne solution?

merci !