Bonjour,
J'ai commencé un programme qui permettra, en gros, d'avoir une synthèse de tous ses cours sur le pc. Mais bon, voilà le problème:
La liste des cours, les cours, les chapitres, sous-chapitres, notes,... sont stockés dans des fichiers sans extensions (un fichier par cours qui contient pour chaque la liste de ses chapitres, chaque chapitres possèdent deux fichiers, un pour tout ce qui est notes, exercices,... et l'autre contient la liste de ses sous-chapitre (qui eux-mêmes ont 2 fichiers,...)). Mais j'aimerais que l'affichage des cours soient "dynamiques", par exemple, lorsque j'ajoute un cour, un fichier est créé et le nom du cour est inscrit dans la liste des cours, j'ai créé une fonction pour afficher les différent cours et donc je lance cette fonction à la fin de celle qui ajoute le cour, mais le cour ne s'affiche que tous les deux ajout. Enfin, bref, vous comprendrez peut-être mieux avec le code

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- coding: cp1252 -*-
from Tkinter import *
import os
 
verif=0
 
try: #Crée le fichier de la liste de cour si il n'existe pas
    list_cours=open("Cours/Liste_cours","r")
    cours=list_cours.read().split("/220695/")
    cours.remove("")
    list_cours.close()
except:
    path=os.getcwd()
    os.mkdir(path+"\\Cours")
    list_cours=open("Cours/Liste_cours","w")
    cours=[]
    list_cours.close()
 
liste=["H","h","E","e","A","a","O","o","U","u","I","i","Y","y"] #Pour la 75e ligne
 
def charg_c(): #Fonction pour afficher les cours
    global var
    list_cours=open("Cours/Liste_cours","r")
    cours=list_cours.read().split("/220695/") #Sépare les différents noms de cours
    cours.remove("")
    list_cours.close()
    if len(cours)==0:
        global lab, fen, verif
        verif=1
        lab=Label(fen, text="Désolé, vous n'avez pas\nencore ajouté de cours")
        lab.grid(row=6,column=5,rowspan=1)
    else:
        if verif==1:
            lab.destroy()
            del lab
        global cour, ajout_chap
        cours_bus=[]
        for i in range(0,len(cours)):            
            cour=Menubutton(fen,text=cours[i],relief="raised")
            cour.m=Menu(cour,tearoff=0)
            c_d=open("Cours/"+cours[i],"r")
            data=c_d.read().split("/220695/")
            data.remove("")
            c_d.close()
            for d in data:
                cour.m.add_command(label=d,command= lambda chap=d: ouvrir_chap(chap))
            cour.m.add_command(label="Ajouter un chapitre", command= lambda c=cours[i]: ajout_chap(c))
            cour.config(menu=cour.m)
            cour.grid(row=6+i, column=5)
            cours_bus.append(cour)
    print "actualiser", cours #Pour vous prouvez que le fichier ne s'actualise pas
 
 
def ajout_chap(cour): #Fonction pour ajouter un cour/chapitre
    def ajouter(EVENT=None):
        ph1=enAj.get()
        list_chap=open("Cours/"+cour,"a")
        list_chap.write(str(enAj.get())+"/220695/")
        list_chap.close
        new_chap=open("Cours/"+str(enAj.get()),"w")
        new_chap.close()
        if cour!="Liste_cours":
            new_chapNote=open("Cours/"+str(enAj.get())+"_notes","w")
            new_chapNote.close()
        fenAj.destroy()
        charg_c()
        fenOk=Toplevel()
        if cour=="Liste_cours":
            if ph1[0] in liste:
                ph2="Le cour d'"
            else:
                ph2="Le cour de "
        else:
            ph2='Le chapitre "'
        ph=ph2+ph1+'" a bien été ajouté'
        labOk=Label(fenOk, text=ph)
        labOk.grid(row=1,column=1,columnspan=3)
        buOk=Button(fenOk, text="Ok", command=fenOk.destroy)
        buOk.grid(row=2,column=2)
    fenAj=Toplevel()
    if cour=="Liste_cours":
        ph4="cour"
    else:
        ph4="chapitre"
    fenAj.title("Ajout d'un "+ph4)
    attAj=Label(fenAj, text="""ATTENTION, n'utilisez pas de caractères spéciaux (ç,à,é,...),
au risque de dérégler complètement le programme""")
    attAj.configure(fg="yellow", bg="red")
    attAj.grid(row=1,column=1,columnspan=5)
    labAj=Label(fenAj, text="Titre :")
    labAj.grid(row=2,column=1,columnspan=3)
    enAj=Entry(fenAj)
    enAj.bind("<Return>", ajouter)
    enAj.grid(row=2,column=4,columnspan=3)
    valAj=Button(fenAj, text="Ajouter", command=ajouter)
    valAj.grid(row=3,column=3)
    annAj=Button(fenAj, text="Annuler", command=fenAj.destroy)
    annAj.grid(row=3,column=4)
 
def ouvrir_chap(chap): #Cette fonction n'est pas finie
    global list_fen
    try:
        if list_fen==None:
            list_fen=[]
    except:
        list_fen=[]
    topfen=Toplevel()
    topfen.title(chap)
    list_fen.append(topfen) #Continuer de construire l'interface
 
 
fen=Tk()
 
lab_cours=Label(fen, text="Liste des cours")
lab_cours.grid(row=5,column=1,columnspan=10)
 
if len(cours)!=0:
    cond=len(cours)
else:
    cond=1
ajout_cour_bu=Button(fen, text="Ajouter un cours", command= lambda c="Liste_cours": ajout_chap(c))
ajout_cour_bu.grid(row=6,column=1,rowspan=cond)
 
charg_c()
 
quitter=Button(fen, text="Quitter", command=fen.quit)
quitter.grid(row=100, column=1, columnspan=10)
 
fen.mainloop()
Au fait, comme vous l'aurez surement remarqué, le programme est encore en pleine construction, alors soyez indulgent ^^

Ah, et aussi, si vous connaissez une fonction pour enlever les caractère non acceptés dans les noms de fichiers, ça serait gentil

Merci et désolé pour les éventuelles fautes d'orthographe