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.... (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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2>>> in interface_av_div_test
Je ne sais pas si c'est assez clair, dites moi
voici le code du programme 1 (choisir_fichier_av_div_test.py):
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
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)
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)?
Partager