module + interface graphique, logique non respectée? pb
Le
jerome defrancais

problème sur l'utilisation d'un module si interface graphique
Problème d'utilisation d'un import de module lorsque l'on utilise une
interface graphique
exemple pour illustrer mes soucis:
soit 2 programmes, le programme principal : prg_A.py et le module:
prg_B
prg_A importe le module prg_B et prg_B modifie une variable.
le soucis est que pour que cette modification soit pris en compte il
faut fermer la fenêtre principale: f !!!
Quelqu'un a t'il une solution pour récupérer cette variable modifié
sans fermer la fenêtre.
Quelque chose m'échappe !!
Code :
# -*- coding: cp1252 -*-
#prog_A.py: (sous C:/Python24)
#--
#programme A
import prg_B #j'importe le module (prg_B.py sous C:/Python24)
def lance_prog_B():
prg_B.fen2() #<<appel de la fonction fen2 du module prg_B
variable_modif=prg_B.variable #<<--PB n'est éxécuté qu'a la
fermeture de
# la fenetre
f !!
print "variable après modif dans prog_B: ",variable_modif
from Tkinter import *
f=Tk() #fenetre principale !!
bouton_lancement=Button(f,text="lance prog
B",command=lance_prog_B).pack()
f.mainloop()
Code :
# -*- coding: cp1252 -*-
#prg_B.py :le module appelé par prg_A.py
from Tkinter import *
def fen2():
print "programme b"
global f2
f2=Toplevel()
b=Button(f2,text="modifions val de b",command=modif).pack()
f2.mainloop()
def modif():
global variable,f2
variable=1
f2.destroy()
**********************************************
A l'éxécution on a après avoir fermé toutes les fenêtres et hél=
as !!
pas avant!!
Code :
>>>
RESTART=
>>>
programme b
variable après modif dans prog_B: 1
>>>
Problème d'utilisation d'un import de module lorsque l'on utilise une
interface graphique
exemple pour illustrer mes soucis:
soit 2 programmes, le programme principal : prg_A.py et le module:
prg_B
prg_A importe le module prg_B et prg_B modifie une variable.
le soucis est que pour que cette modification soit pris en compte il
faut fermer la fenêtre principale: f !!!
Quelqu'un a t'il une solution pour récupérer cette variable modifié
sans fermer la fenêtre.
Quelque chose m'échappe !!
Code :
# -*- coding: cp1252 -*-
#prog_A.py: (sous C:/Python24)
#--
#programme A
import prg_B #j'importe le module (prg_B.py sous C:/Python24)
def lance_prog_B():
prg_B.fen2() #<<appel de la fonction fen2 du module prg_B
variable_modif=prg_B.variable #<<--PB n'est éxécuté qu'a la
fermeture de
# la fenetre
f !!
print "variable après modif dans prog_B: ",variable_modif
from Tkinter import *
f=Tk() #fenetre principale !!
bouton_lancement=Button(f,text="lance prog
B",command=lance_prog_B).pack()
f.mainloop()
Code :
# -*- coding: cp1252 -*-
#prg_B.py :le module appelé par prg_A.py
from Tkinter import *
def fen2():
print "programme b"
global f2
f2=Toplevel()
b=Button(f2,text="modifions val de b",command=modif).pack()
f2.mainloop()
def modif():
global variable,f2
variable=1
f2.destroy()
**********************************************
A l'éxécution on a après avoir fermé toutes les fenêtres et hél=
as !!
pas avant!!
Code :
>>>
RESTART=
>>>
programme b
variable après modif dans prog_B: 1
>>>
Seul l'appel de mainloop() sur la fenêtre principale est nécessaire.
Si tu appelles f2.mainloop(), ça fera une boucle d'événements
secondaires qui ne sortira effectivement qu'après avoir fermé la
fenêtre. D'un autre côté, je ne comprends pas ce que tu veux faire, e t
tel que c'est écrit, ça risque de faire une erreur AttributeError, vu
que tant que tu n'as pas fermé la fenêtre justement, il ne semble pas
y avoir de variable 'variable' dans le module prg_BÂ…
Mais bon, HTH quand mêmeÂ…
- Eric -