module + interface graphique, logique non respectée? pb
1 réponse
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
>>>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 -
On Jun 5, 12:38 am, jerome defrancais <ohtoulo...@gmail.com> 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
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