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
>>>
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
eb303
Le #22222311
On Jun 5, 12:38 am, 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 élas !!
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 -
Publicité
Poster une réponse
Anonyme