Bonjour,

j'ai un petit soucis sur une appli python héhé !

Wala : je crée une fenêtre découpées en labels (pour pouvoir mettre une image d'arrière plan) et chacun de ces labels comporte un certain nombre d'éléments (entry, boutons, labels, etc..)

Seulement, lorsque je m'amuse à déplacer ma fenêtre principale et que je la sors en partie de l'écran, soit tous mes widgets disparaissent, soit un certain nombre de ma fenêtre.
Seules les labels avec les images de fond ne changent pas.

De plus, si un bouton disparait et que je le survole simplement avec la souris, il réapparait à l'écran.

Et pour finir si je réduis ma fenêtre et que je la restaure, tout reviens !

Je ne comprends absolument pas d'où ça peut venir? Peut être un problème de focus? Mon label de dessous avec mon image s'affiche par dessus les autres?

Besoin d'un coup de main

Merki !

PS : le code est un peu lourd, je vous fait un petit résumé :
Une classe code permet de stocker les liens vers les images de fond et contient une fonction d'assemblage des labels de fond.

J'ai créé une classe par 'morceau de fenêtre' (par label de fond). Cette classe contient simplement un dictionnaire de fonctions qui créent un nouveau label de fond pour nouvelle fonction.
Ces labels sont ainsi assemblés via la fonction assemblage de la classe panneau (ci dessus).


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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
#classe contenant le liens vers les images et une fonction d'assemblage de labels stockés dans des dictionnaires :
 
class panneaux:
    def __init__(self, parent):     
 
        #importation des images de fond (chemin d'acces) :
 
        self.image_descriptif=ImageTk.PhotoImage(Image.open('../images/descriptif.jpg'))
        self.image_variable=ImageTk.PhotoImage(Image.open('../images/variable.jpg'))
 
        self.parent=parent
 
    #assemblage des panneaux :
    def assemblage(self, coin_inf_g, clef_dico_inf_g, milieu, clef_dico_milieu):
 
        LABEL_DESCRIPTIF=coin_inf_g.dico_label[clef_dico_inf_g]()
        LABEL_DESCRIPTIF.grid(row=1, column=0, rowspan=2, sticky='NSEW')
        LABEL_DESCRIPTIF.grid_propagate(0)        
 
        LABEL_VARIABLE=milieu.dico_label[clef_dico_milieu]()
        LABEL_VARIABLE.grid(row=1, column=1, sticky='NSEW')
        LABEL_VARIABLE.grid_propagate(0)
 
 
 
#premiere classe 'creatrice' de fonction :
 
class panneau_inf_gauche(panneaux):
    def __init__(self, parent):
        panneaux.__init__(self, parent)
 
 
        #creation du dictionnaire contenant toutes les fonctions, chaque fonction sert à créer un label qui sera griddé par l'assemblage de la classe panneaux :
 
        self.dico_label={99:self.img_descriptif_init}
 
    def img_descriptif_init(self):
        descriptif_label=Tkinter.Label(self.parent, image=self.image_descriptif, borderwidth=0)
        descriptif_label.image=self.image_descriptif
        return descriptif_label
 
 
 
 
 
#seconde classe 'creatrice' de fonction :
 
class panneau_milieu(panneaux):
    def __init__(self, parent):
        panneaux.__init__(self, parent)
 
 
        # creation du dictionnaire de fonctions : 
 
        self.dico_label={0:self.presentation}  
 
 
 
    #fonction créant le label :       
 
    def presentation(self):
 
        fond1=Tkinter.Label(self.parent, image=self.image_variable, borderwidth=0)
        fond1.image=self.image_variable
        fond1.grid_propagate(0)
 
        label_var=Tkinter.Label(fond1, bg='lightgray', width=75, height=30, relief='sunken', text='', takefocus=1)
        label_var.grid()
        label_var.grid_propagate(0)
 
        var=Tkinter.Label(label_var, font = 'Arial 12' , text='Hello ! Blabla Bla ! \n ...', bg='lightgray')
        var.grid(row=1, column=0)        
 
        return fond1