Bonsoir,
Et encore un problème (le dernier je pense).
J'ai un programme 1 qui permet de mettre dans une listebox tous les noms de fichiers trouvés dans un certain dossier. Quand on clique sur un des noms de la listebox, ce programme 1 appelle un autre programme 2 qui lui affiche une interface graphique en mettant dans des labels des infos recueillies dans le fichier sélectionné (dans la listebox).
Le problème c'est qu'une fois que j'enregistre l'interface graphique et que je veux refaire la même chose avec un autre fichier (je clique sur un nom dans la listebox) et là rien ne se passe (à part que dans le shell apparait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
>>> 
in interface_av_div_test
.... (alors que le programme 1 devrait rappeler le programme2 pour afficher l'interface avec dans les labels les données du nouveau fichier choisi). Je choisi à chaque fois obligé de fermer la fenêtre avec la listebox puis relancer le programme1 pour que à nouveau je puisse sélectionné un fichier dans la listebox et que au double clic çà affiche l'interface.

Je ne sais pas si c'est assez clair, dites moi

voici le code du programme 1 (choisir_fichier_av_div_test.py):
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#-*- coding: utf-8 -*-  # Définition l'encodage des caractères
import os #importer le module servant à communiquer avec le système d'exploitation
import sys # pour pouvoir communiquer entre les scripts
 
 
 
 
 
 
#Pour que ce script puisse être exécuté grâce à au script choisir_fichier_avant_div
def Foo5():
    print('in choisir_fichier_av_div_test')
 
 
 
 
 
 
 
 
import tkinter
from tkinter import *
from tkinter import ttk
import tkinter.filedialog as Selector 
 
 
 
root=tkinter.Tk()
mafenetre1=tkinter.Frame()# pour créer une fenêtre
#root.pack()# pour placer les widgets les uns en_dessous des autres
label=tkinter.Label(root,text="titre",justify="center",fg="black",bg="#00FA9A")
 
label.pack() 
 
label=tkinter.Label(root,text="Choisissez un fichier",justify="center",fg="black",bg="grey")                                                                                        
label.pack()  
listb2=tkinter.Listbox(root) 
lab2=tkinter.Label(root,text=" ")
listb2.pack()
lab2.pack() 
liste2=[]
 
for  root1,dirs,files in os.walk('/Users/Fanny/Desktop/avant div'): 
    for name in files:
        liste2.append(name)
for i in liste2: 
    listb2.insert(END,i)
 
 
def Valider_fichier(e):
    select=listb2.get(listb2.curselection())
    lab2.configure(text="Fichier choisi : "+select,bg="white") 
    nom_fichier=select
 
 
    import sys 
    sys.argv2=nom_fichier
 
    #Pour exécuter le fichier interface_fichier_avant_div
    import interface_av_div_test
    interface_av_div_test.Foo1()
 
 
 
 
#un double clic dans la listbox appelera la fonction Valider_fichier
listb2.bind('<Double-1>',Valider_fichier)
 
 
##########################" Pour exécuter le programme #######################
 
root.mainloop()# pour exécuter les instructions (attend des événements)
et une partie du programme2 (interface_av_div_test.py):
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
36
#-*- coding: utf-8 -*-  # Définition l'encodage des caractères
import os
import sys 
 
#Pour que ce script puisse être exécuté grâce à au script choisir_fichier_avant_div
def Foo1():
    print('in interface_av_div_test')
###Ouvrir le fichier eclipse et prendre les données qui nous intéressent
ouvert=open('/Users/Fanny/Desktop/avant div/mickey') 
dico={}  
compteur_faisceaux=0 
 
for t in ouvert: 
    longueur=len(t) 
    if t[0:18]=='Patient First Name': 
        dico['Patient First Name']=t[19:longueur-1]
ouvert.close() 
 
import tkinter 
avant_div=tkinter.Toplevel()
label=tkinter.Label(avant_div,text=dico['Patient First Name'] ,anchor="w",fg="black",bg="white")
 
label.grid(column=0,row=0) 
 
def Enregistrement() :
 
    os.unlink('/Users/Fanny/Desktop/avant div/mickey')    
    fichier_sauvegarde=open("/Users/Fanny/Desktop/Apres DIV/"+"//"+ str(sys.argv2),"w")
 
    for cle,valeur in avant_div.dico.items(): 
        fichier_sauvegarde.write("%s=%s\n"%(str(cle),str(valeur)))
    fichier_sauvegarde.close()
 
    avant_div.destroy()
bouton = tkinter.Button(avant_div, bg='violet', text='Enregistrement', command = Enregistrement) 
bouton.grid(column=1, row=0)

Est-ce un bug de python de faire çà? où est-ce que quand j'ai oublié quelquechose dans mes codes où quelque chose est-il mal écrit (pour mon problème)?