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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
| from tkinter import *
from tkinter.messagebox import * # Appel du sous-module boîtes de messages showinfo
from tkinter import tix
import pickle
##########################################
### FENETRE FILLE LISTE ###
##########################################
def OuvrirFF():
###FONCTIONS DU MENU###
def Enregistrer(): # Enregistre la liste
global Liste
Liste= list(LisNom.get(0, END))
CopListe()
FListe = open( F+'_Liste.text', 'wb' )
pickle.dump(Liste,FListe)
FListe.close()
#def Enregistrersous(): # Fonction de l'appel command=du même nom
#showinfo("Confirmation", "Commande Enregistrer sous OK!") #test fonction avec une boite message info
def Apropos(): # Fonction de l'appel command=du même nom
showinfo(F+'_Liste.txt', "Gestion de liste simple, coding: utf-8, D A-B, 20/04/2015") #test fonction avec une boite message info
def TrilistAZ(): #Tri la liste de croissant
temp_list = list(LisNom.get(0, END))#Liste temporaire = Liste
temp_list.sort(key=str.lower)#tri dans l'ordre alphabétique
LisNom.delete(0, END)#Efface la liste"
for item in temp_list:#prend toutes les valeurs de la liste temporaire
LisNom.insert(END, item)#copie dans la liste en partant de la fin
def TrilistZA(): ##### TRI LA LISTE DECROISSANT
temp_list = list(LisNom.get(0, END))#Liste temporaire = Liste
temp_list.sort(key=str.lower)#Ordonne la liste temporaire
LisNom.delete(0, END)#Efface la liste"
for item in temp_list:#prend toutes les valeurs de la liste temporaire
LisNom.insert(0, item)#copie dans la liste en partant du début
def DelListe():###Efface la liste
LisNom.delete(0, END)#Efface toutes les valeurs de la Liste
###FONCTIONS DES BOUTONS###
def addEntry () : ###Ajoute à la liste la variable saisie dans le champ entrée
LisNom.insert(0, ChpNom.get())#colle la variable entrée au début de la liste
VarNom.set("")#vide la variable entrée
def DelIndex(): ###Efface la sélection en cours dans la liste
try:
index = LisNom.curselection()#calcule l'index de la selection en cours dans la liste
LisNom.delete(index)#supprime la sélection correspondante
except IndexError:
pass
def Modifier(): ###Déplace la sélection en cours dans la liste vers saisie dans le champ entrée
index = LisNom.curselection() #calcule l'index de la selection en cours dans la liste
ChpModif = LisNom.get(index) #affecte un nom à l'index correspondant
ChpNom.delete(0, END) #supprime tous les cractères du Champ de saisie"
ChpNom.insert(0, ChpModif)#copie la variable correspondante dans
DelIndex() #efface la variable de la liste
###MISE EN PAGE TOPLEVEL###
W1 = Toplevel() ###Appel Toplevel
W1.title('LISTE DES PARTICIPANTS') #Titre
###BARRE DE MENU###
menubar = Menu(W1)
W1.config(menu=menubar)
menu1 = Menu(menubar, tearoff=0)
menu1.add_command(label="Enregistrer", command=Enregistrer)
#menu1.add_command(label="Enregistrer sous", command=Enregistrer)
menu1.add_separator()
menu1.add_command(label="Quitter", command=W1.destroy)
menubar.add_cascade(label="Sauvegarder", menu=menu1)
menu2 = Menu(menubar, tearoff=0)
menu2.add_command(label="Vider la liste", command=DelListe)
menu2.add_command(label="Trier ordre croissant", command=TrilistAZ)
menu2.add_command(label="Trier ordre décroissant", command=TrilistZA)
menubar.add_cascade(label="Organiser", menu=menu2)
menu3 = Menu(menubar, tearoff=0)
menu3.add_command(label="A propos", command=Apropos)
menubar.add_cascade(label="Aide", menu=menu3)
###COMMANDES FONCTIONS###
TitChpNom = Label(W1, text = 'Nom : ', anchor= E, width=20) # Titre du champ de saisie NOM
VarNom= StringVar() # Variable saisie de type texte
ChpNom = Entry(W1, textvariable= VarNom, width=70, bg ='#fbfbec', fg='blue')# Champ de saisie Evènement
b1 = Button(W1,text="Ajouter à la liste", command=addEntry)
b2 = Button(W1,text="Supprimer la sélection",command=DelIndex)
b3 = Button(W1,text="Modifier la sélection",command=Modifier)
ScrListNom = Scrollbar(W1) #Barre de défilement liste
ScrListNom.grid(column=2,row=3,sticky= 'WNS') #Position barre de défilement
LisNom = Listbox(W1, yscrollcommand=ScrListNom.set, width=70, bg ='#fbfbec', fg='blue', height=10)# Liste
LisNom.grid(column=1,row=3,sticky= 'W') # Position de la liste
ScrListNom.config(command=LisNom.yview) # Barre de défilement liste verticale
FListe = open( F+'_Liste.text', 'rb' )
templ_list = pickle.load(FListe)
LisNom.delete(0, END)#Efface la liste"
for item in templ_list:#prend toutes les valeurs de la liste temporaire
LisNom.insert(END, item)#copie dans la liste en partant de la fin
FListe.close()
###MISE EN PAGE CDES FONCTIONS###
Spa1 = Label(W1).grid(row=0) #Espace1 saut de ligne
Spa2 = Label(W1).grid(row=2) #Espace2 saut de ligne
Spa3 = Label(W1).grid(row=5) #Espace2 saut de ligne
TitChpNom.grid(column=0,row=1) #Position du Label
ChpNom.grid(column=1,row=1,sticky= 'W',columnspan=3) #Position du champ de saisie
b1.grid(column=2,row=1,padx= 20, sticky= 'W') # Position bouton
b2.grid(column=1,row=4,sticky= 'E') # Position bouton
b3.grid(column=1,row=4,sticky= 'W') # Position bouton
##########################################
### FENETRE PRINCIPALE ###
##########################################
FP = Tk()
w, h = FP.winfo_screenwidth(), FP.winfo_screenheight() # récupère les dimensions d'affichage système
FP.geometry("%dx%d+0+0" % (w-15, h)) # ajuste les dimensions de la fenêtre sur celles du système
FP['bg']='white' # couleur de fond
menubar = Menu(FP)
menu1 = Menu(menubar, tearoff=0)
menu1.add_command(label="Ouvrir", command=OuvrirFF)
menubar.add_cascade(label="FICHIER LISTE", menu=menu1)
FP.config(menu=menubar)
def CopListe(): ###Copie la liste dans la fenetre principale
combo.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0, END)
for item in Liste:#prend toutes les valeurs de la liste toplevel
combo.insert(0, item)#copie dans la liste fenetre principale en partant du début
def Affiche(evt):
print (varcombo.get()) # affiche valeur selectionnée dans la combobox
FP.tk.eval('package require Tix')
varcombo = tix.StringVar()
combo = tix.ComboBox(FP, width=70, height=10, editable=1, dropdown=1, variable=varcombo, command = Affiche)
combo.entry.config(state='readonly') # Met la zone de texte en lecture seule
combo.grid(column=2,row=1,sticky= 'W')
P= sys.argv[0] # récupère le chemin complet du module
FE= P[:-4].split("\\") #découpe le chemin après avoir supprimé .pyw
F=FE[len(FE)-1] # garde le premier tronçon du chemin
FP.title(F) # utilise le premier tronçon du chemin comme titre fenêtre
try:
FListe = pickle.load(open( F+'_Liste.text', 'rb' ))
except FileNotFoundError:
FListe = ['Nouveau']
pass
pickle.dump( FListe, open( F+'_Liste.text', 'wb' ) )
FListe = open( F+'_Liste.text', 'rb' )
Liste = pickle.load(FListe)
CopListe()
FListe.close()
FP.mainloop() |