Développeuses, Développeurs, bonjour !
encore un problème avec "self" en tentant de passer une variable d'une classe à une autre.
Comment actualiser la fenêtre principale "uiClass" avec les données d'une sous-fenêtre "ClassPref" ?
Le code épuré:
Message d'erreur:
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 # La fenetre principale class uiClass : def __init__ ( self, ... ) : # Champ texte self.ch_dest = tk.Text ( self.frame, ... ) # Menu depuis lequel on lance la sous-fenetre (Preferences) menuChoix.add_command ( label='Preferences', self.lance_pref () ) def lance_pref ( self ) : # instance de la sous-fenetre (Preferences) inst_ClassPref = ClassPref () def ch_actualisation ( self ) : # Ici la recuperation des donnees creees dans ClassPref # insertion de ces donnees dans le champ texte ch_dest self.ch_dest.insert ( 1.0, ClassPref.passer_pref_on_ok () ) # La sous-fenetre: Classe des Preferences class ClassPref ( tk.Toplevel ) : def __init__ ( self, parent=uiClass ): self.parent = parent self.btn = tk.Button ( ... , command = self.passer_pref_on_ok () ) def passer_pref_on_ok ( self ) : self.new_text = "du texte" # lance l actualisation de la fenetre principale (uiClass) self.parent.ch_actualisation ( self.parent ) return ( self.new_text )
Comment se fait-il que l'instance de uiClass ne reconnaisse plus son champs défini dans son __init__ ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Exception in Tkinter callback Traceback (most recent call last): File "C:\Python32\lib\tkinter\__init__.py", line 1456, in __call__ return self.func(*args) File "C:/Python32/MES_PROGS/lettre10_python3_8.py", line 527, in passer_pref_on_ok self.parent.ch_actualisation ( self.parent ) File "C:/Python32/MES_PROGS/lettre10_python3_8.py", line 389, in ch_actualisation self.ch_dest.insert ( 1.0, ClassPref.passer_pref_on_ok () ) AttributeError: type object 'uiClass' has no attribute 'ch_dest'
Je ne dois pas encore bien saisir l'histoire du "self" ...
Merci pour toute info !
Partager