Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
jerome defrancais
probl=E8me sur l'utilisation d'un module si interface graphique
Probl=E8me 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=EAtre principale: f !!!

Quelqu'un a t'il une solution pour r=E9cup=E9rer cette variable modifi=E9
sans fermer la fen=EAtre.
Quelque chose m'=E9chappe !!

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=3Dprg_B.variable #<<--PB n'est =E9x=E9cut=E9 qu'a la
fermeture de
# la fenetre
f !!
print "variable apr=E8s modif dans prog_B: ",variable_modif

from Tkinter import *
f=3DTk() #fenetre principale !!
bouton_lancement=3DButton(f,text=3D"lance prog
B",command=3Dlance_prog_B).pack()
f.mainloop()



Code :

# -*- coding: cp1252 -*-
#prg_B.py :le module appel=E9 par prg_A.py
from Tkinter import *

def fen2():
print "programme b"
global f2
f2=3DToplevel()
b=3DButton(f2,text=3D"modifions val de b",command=3Dmodif).pack()
f2.mainloop()

def modif():
global variable,f2
variable=3D1
f2.destroy()

**********************************************
A l'=E9x=E9cution on a apr=E8s avoir ferm=E9 toutes les fen=EAtres et h=E9l=
as !!
pas avant!!
Code :

>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D RESTART=3D=3D=3D=3D
>>>
programme b
variable apr=E8s modif dans prog_B: 1
>>>

1 réponse

Avatar
eb303
On Jun 5, 12:38 am, jerome defrancais wrote:
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 -