Accueil > > > RÉPERTOIRE TÉLÉPHONIQUE AVEC "MULTI-COMPTE"
RÉPERTOIRE TÉLÉPHONIQUE AVEC "MULTI-COMPTE"
Information sur la source
Description
Comme le titre du code l'indique, ce prog sert de répertoire téléphonique. Pour ma part je me suis inspirer de la présentation de msdieme qui a déjà poster il y a pas mal de temps son programme. J'ai trouver l'idées interessante donc j'ai essayer.
Je l ai pas mal tester, je n'ai pas trouver de problèmes pour le moment.
Si vous en trouver un faite le moi savoir en me laissant un commentaire.
PS: j ai commencer a programmer en septembre qd j ai commencer l année scolaire donc soyez indulgeant svp :p
Source
- # -*- coding: utf-8 -*-
- #REPERTOIRE TELEPHONIQUE
-
-
- from Tkinter import *
- from tkMessageBox import showwarning, showinfo
- from tkFileDialog import asksaveasfilename
-
-
-
- #===FONCTION===
-
- #---Fonction servant à l'identification et à la création de l'utilisateur---
-
- def identification():
- global donnee_utilisateur
-
- try:
- fichier=open("utilisateur.dbs","r") #Ouverture du fichier contenant les données des différents utilisateurs
- except:
- showwarning("ERREUR", "Aucun utilisateur n'est enregistrer!")
-
- if entree_utilisateur.get()=="" or entree_code.get()=="":
- showwarning("ERREUR", "Veuillez remplir tous les champs")
-
- else:
- #Création de la liste des utilisateur ainsi que de leur code
- liste_utilisateur=fichier.readlines()
-
- if entree_utilisateur.get()+"\n" in liste_utilisateur:
- posi_utilisateur=liste_utilisateur.index(entree_utilisateur.get()+"\n")
- if entree_code.get()+"\n"==liste_utilisateur[posi_utilisateur+1]:
-
- #initialisation des données de l'utilisateur
- #contient le chemin d'accès au fichier répertoire de l'utilisateur
- donnee_utilisateur=liste_utilisateur[posi_utilisateur+2]
- fen.quit()
- else:
- showwarning("ERREUR", "Le nom d'identification ou le mot de passe sont incorect.\nVeuillez recommencer ou quitter!")
-
-
-
- fichier.close()
-
-
-
- def nouveau():
- """ Fonction servant a la création d'un
- nouveau profil d'utilisateur """
-
- fichier=open("utilisateur.dbs","r") #Ouverture du fichier utilisateur en mode lecture
- if entree_utilisateur.get()=="" or entree_code.get()=="":
- showwarning("ERREUR", "Veuillez remplir tous les champs")
-
- else:
- liste_utilisateur=fichier.readlines() #Création de la liste des données des différents utilisateurs
- if entree_utilisateur.get()+"\n" in liste_utilisateur:
- showwarning("ERREUR", "Ce nom d'utilisateur est déjà utiliser")
- else:
- fichier.close() #Fermeture du fichier si le nom d'utilisateur n'est pas encore utiliser pour
- fichier=open("utilisateur.dbs","a") #ensuite l'ouvrir en mode ajout
- #Ajout des données du nouvel utilisateur
- fichier.write(entree_utilisateur.get()+"\n")
- fichier.write(entree_code.get()+"\n")
- chemin_fichier=asksaveasfilename(parent=fen, filetypes = [("Repertoire", "*.dbs")], title="Enregistrer sous...")
- fichier.write(chemin_fichier+"\n")
-
- fichier.close()
-
-
- #---Fonction servant après l'identification de l'utilisateur---
-
-
- def ajouter():
- """ Fonction servant a ajouter un
- contact au répertoire"""
-
- #Traitement du chemin du fichier de l'utilisateur
- #pour 'supprimer' le retour à la ligne de fin
- chemin_fichier=""
- for elem in donnee_utilisateur:
- if elem!='\n':
- chemin_fichier+=elem
-
- if entree_prenom.get()=="" or entree_nom.get()=="" or entree_numero.get()=="":
- showwarning("ERREUR", "Veuillez remplir tous les champs")
-
- else:
- fichier=open(chemin_fichier,"a") #Ouverture du fichier de l'utilisateur contenant son répertoire
- #Ajout des données du contact
- fichier.write(str(entree_prenom.get())+"\n")
- fichier.write(str(entree_nom.get())+"\n")
- fichier.write(str(entree_numero.get())+"\n")
- text_prenom.set("")
- text_nom.set("")
- text_numero.set("")
- fichier.close()
- actualiser()
-
-
- def afficher():
- """ Fonction servant a afficher les contacts
- dans l'ordre dans lequel il ont été ajouter au répertoire"""
- global posi_liste
-
- try:
- text_prenom.set(liste[posi_liste])
- text_nom.set(liste[posi_liste+1])
- text_numero.set(liste[posi_liste+2])
- posi_liste+=3
- except:
- text_prenom.set("Fin du répertoire")
- text_nom.set("Fin du répertoire")
- text_numero.set("Fin du répertoire")
-
- posi_liste=0
-
-
- def supprimer():
-
- try:
- """Suppression des données de la 'fiche'
- du repertoire dans la liste"""
- i=liste.index(entree_prenom.get())
- del liste[i:i+3]
- text_prenom.set("")
- text_nom.set("")
- text_numero.set("")
-
-
- except:
- showwarning("ERREUR", "Ce nom ne figure pas dans votre répertoire")
-
- #Traitement du chemin du fichier de l'utilisateur
- #pour 'supprimer' le retour à la ligne de fin
- chemin_fichier=""
- for elem in donnee_utilisateur:
- if elem!='\n':
- chemin_fichier+=elem
-
- fichier=open(chemin_fichier,"w") #Ouverture du fichier en mode 'réécrire' (créer un nouveau fichier du même nom mais vide)
-
- for elem in liste: #Ajout de la liste au nouveau fichier
- fichier.write(elem+"\n") #sans les données de la fiche du répertoire
- fichier.close()
-
-
-
-
- def actualiser():
- global liste
- liste=[]
-
-
- #Traitement du chemin du fichier de l'utilisateur
- #pour 'supprimer' le retour à la ligne de fin
- chemin_fichier=""
- for elem in donnee_utilisateur:
- if elem!='\n':
- chemin_fichier+=elem
-
- fichier=open(chemin_fichier,"r") #Ouverture du fichier en mode lecture
-
- ligne=fichier.readline() #Parcours du fichier
- while ligne!="": #ligne par ligne et suppression
- elem="" #du retour a la ligne
- for caract in ligne:
- if caract!='\n':
- elem=elem+caract
- liste.append(elem) #Ajout de la ligne après
- ligne=fichier.readline() #traitement
- fichier.close()
-
-
-
- #===PROGRAMME PRINCIPAL===
-
- #---Fenêtre login---
- fen=Tk()
- fen.title("Répertoire téléphonique")
-
- can=Canvas(fen)
-
- "Création de la barre de menu"
-
- barre_menu=Menu(fen)
- barre_menu.add_command(label="Quitter", command=fen.quit)
-
-
- "Création des widgets servant a l'identification de l'utilisateur"
-
- Label(can, text="Nom d'utilisateur").grid(row=2, column=2, sticky=E)
- entree_utilisateur=Entry(can)
- entree_utilisateur.grid(row=2, column=3)
-
- Label(can, text="Code").grid(row=3, column=2, sticky=E)
- entree_code=Entry(can)
- entree_code.configure(show="*")
- entree_code.grid(row=3, column=3)
-
-
- Button(can, text="Identification", command=identification).grid(row=4, column=1)
- Button(can, text="Nouveau profil", command=nouveau).grid(row=4, column=3)
-
-
- can.grid()
-
- fen.config(menu=barre_menu)
-
- fen.mainloop()
- fen.destroy()
-
- #=====================================#
-
- #---Fenêtre utilisateur---
-
- posi_liste=0
- actualiser()
-
-
- fen_utili=Tk()
- fen_utili.title("REPERTOIRE TELEPHONIQUE")
-
- "Création de la barre de menu"
-
- barre_menu=Menu(fen_utili)
- barre_menu.add_command(label="Quitter", command=fen.quit)
-
-
-
- "Création et placement des widgets textes, boutons, canvas et entrées"
- can=Canvas(fen_utili)
-
- "Création et mise en place des widgets servant au prénom"
- text_prenom=StringVar()
- Label(can, text="Prénom").grid(column=2, row=2, sticky=E)
- entree_prenom=Entry(can, textvariable=text_prenom)
- entree_prenom.grid(column=3, row=2)
-
- "Création et mise en place des widgets servant au nom"
- text_nom=StringVar()
- Label(can, text="Nom").grid(column=2, row=3, sticky=E)
- entree_nom=Entry(can, textvariable=text_nom)
- entree_nom.grid(column=3, row=3)
-
- "Création et mise en place des widgets servant au n° de téléphone"
- text_numero=StringVar()
- Label(can, text="N° de téléphone").grid(column=2, row=4, sticky=E)
- entree_numero=Entry(can, textvariable=text_numero)
- entree_numero.grid(column=3, row=4)
-
-
- Button(can, text="Ajouter", command=ajouter).grid(column=1, row=5, sticky=E)
- Button(can, text="Actualiser", command=actualiser).grid(column=2, row=5)
- Button(can, text="Supprimer", command=supprimer).grid(column=3, row=5)
- Button(can, text="Afficher", command=afficher).grid(column=4, row=5)
-
-
- can.grid()
-
- fen_utili.config(menu=barre_menu)
-
- fen_utili.mainloop()
- fen_utili.destroy()
# -*- coding: utf-8 -*-
#REPERTOIRE TELEPHONIQUE
from Tkinter import *
from tkMessageBox import showwarning, showinfo
from tkFileDialog import asksaveasfilename
#===FONCTION===
#---Fonction servant à l'identification et à la création de l'utilisateur---
def identification():
global donnee_utilisateur
try:
fichier=open("utilisateur.dbs","r") #Ouverture du fichier contenant les données des différents utilisateurs
except:
showwarning("ERREUR", "Aucun utilisateur n'est enregistrer!")
if entree_utilisateur.get()=="" or entree_code.get()=="":
showwarning("ERREUR", "Veuillez remplir tous les champs")
else:
#Création de la liste des utilisateur ainsi que de leur code
liste_utilisateur=fichier.readlines()
if entree_utilisateur.get()+"\n" in liste_utilisateur:
posi_utilisateur=liste_utilisateur.index(entree_utilisateur.get()+"\n")
if entree_code.get()+"\n"==liste_utilisateur[posi_utilisateur+1]:
#initialisation des données de l'utilisateur
#contient le chemin d'accès au fichier répertoire de l'utilisateur
donnee_utilisateur=liste_utilisateur[posi_utilisateur+2]
fen.quit()
else:
showwarning("ERREUR", "Le nom d'identification ou le mot de passe sont incorect.\nVeuillez recommencer ou quitter!")
fichier.close()
def nouveau():
""" Fonction servant a la création d'un
nouveau profil d'utilisateur """
fichier=open("utilisateur.dbs","r") #Ouverture du fichier utilisateur en mode lecture
if entree_utilisateur.get()=="" or entree_code.get()=="":
showwarning("ERREUR", "Veuillez remplir tous les champs")
else:
liste_utilisateur=fichier.readlines() #Création de la liste des données des différents utilisateurs
if entree_utilisateur.get()+"\n" in liste_utilisateur:
showwarning("ERREUR", "Ce nom d'utilisateur est déjà utiliser")
else:
fichier.close() #Fermeture du fichier si le nom d'utilisateur n'est pas encore utiliser pour
fichier=open("utilisateur.dbs","a") #ensuite l'ouvrir en mode ajout
#Ajout des données du nouvel utilisateur
fichier.write(entree_utilisateur.get()+"\n")
fichier.write(entree_code.get()+"\n")
chemin_fichier=asksaveasfilename(parent=fen, filetypes = [("Repertoire", "*.dbs")], title="Enregistrer sous...")
fichier.write(chemin_fichier+"\n")
fichier.close()
#---Fonction servant après l'identification de l'utilisateur---
def ajouter():
""" Fonction servant a ajouter un
contact au répertoire"""
#Traitement du chemin du fichier de l'utilisateur
#pour 'supprimer' le retour à la ligne de fin
chemin_fichier=""
for elem in donnee_utilisateur:
if elem!='\n':
chemin_fichier+=elem
if entree_prenom.get()=="" or entree_nom.get()=="" or entree_numero.get()=="":
showwarning("ERREUR", "Veuillez remplir tous les champs")
else:
fichier=open(chemin_fichier,"a") #Ouverture du fichier de l'utilisateur contenant son répertoire
#Ajout des données du contact
fichier.write(str(entree_prenom.get())+"\n")
fichier.write(str(entree_nom.get())+"\n")
fichier.write(str(entree_numero.get())+"\n")
text_prenom.set("")
text_nom.set("")
text_numero.set("")
fichier.close()
actualiser()
def afficher():
""" Fonction servant a afficher les contacts
dans l'ordre dans lequel il ont été ajouter au répertoire"""
global posi_liste
try:
text_prenom.set(liste[posi_liste])
text_nom.set(liste[posi_liste+1])
text_numero.set(liste[posi_liste+2])
posi_liste+=3
except:
text_prenom.set("Fin du répertoire")
text_nom.set("Fin du répertoire")
text_numero.set("Fin du répertoire")
posi_liste=0
def supprimer():
try:
"""Suppression des données de la 'fiche'
du repertoire dans la liste"""
i=liste.index(entree_prenom.get())
del liste[i:i+3]
text_prenom.set("")
text_nom.set("")
text_numero.set("")
except:
showwarning("ERREUR", "Ce nom ne figure pas dans votre répertoire")
#Traitement du chemin du fichier de l'utilisateur
#pour 'supprimer' le retour à la ligne de fin
chemin_fichier=""
for elem in donnee_utilisateur:
if elem!='\n':
chemin_fichier+=elem
fichier=open(chemin_fichier,"w") #Ouverture du fichier en mode 'réécrire' (créer un nouveau fichier du même nom mais vide)
for elem in liste: #Ajout de la liste au nouveau fichier
fichier.write(elem+"\n") #sans les données de la fiche du répertoire
fichier.close()
def actualiser():
global liste
liste=[]
#Traitement du chemin du fichier de l'utilisateur
#pour 'supprimer' le retour à la ligne de fin
chemin_fichier=""
for elem in donnee_utilisateur:
if elem!='\n':
chemin_fichier+=elem
fichier=open(chemin_fichier,"r") #Ouverture du fichier en mode lecture
ligne=fichier.readline() #Parcours du fichier
while ligne!="": #ligne par ligne et suppression
elem="" #du retour a la ligne
for caract in ligne:
if caract!='\n':
elem=elem+caract
liste.append(elem) #Ajout de la ligne après
ligne=fichier.readline() #traitement
fichier.close()
#===PROGRAMME PRINCIPAL===
#---Fenêtre login---
fen=Tk()
fen.title("Répertoire téléphonique")
can=Canvas(fen)
"Création de la barre de menu"
barre_menu=Menu(fen)
barre_menu.add_command(label="Quitter", command=fen.quit)
"Création des widgets servant a l'identification de l'utilisateur"
Label(can, text="Nom d'utilisateur").grid(row=2, column=2, sticky=E)
entree_utilisateur=Entry(can)
entree_utilisateur.grid(row=2, column=3)
Label(can, text="Code").grid(row=3, column=2, sticky=E)
entree_code=Entry(can)
entree_code.configure(show="*")
entree_code.grid(row=3, column=3)
Button(can, text="Identification", command=identification).grid(row=4, column=1)
Button(can, text="Nouveau profil", command=nouveau).grid(row=4, column=3)
can.grid()
fen.config(menu=barre_menu)
fen.mainloop()
fen.destroy()
#=====================================#
#---Fenêtre utilisateur---
posi_liste=0
actualiser()
fen_utili=Tk()
fen_utili.title("REPERTOIRE TELEPHONIQUE")
"Création de la barre de menu"
barre_menu=Menu(fen_utili)
barre_menu.add_command(label="Quitter", command=fen.quit)
"Création et placement des widgets textes, boutons, canvas et entrées"
can=Canvas(fen_utili)
"Création et mise en place des widgets servant au prénom"
text_prenom=StringVar()
Label(can, text="Prénom").grid(column=2, row=2, sticky=E)
entree_prenom=Entry(can, textvariable=text_prenom)
entree_prenom.grid(column=3, row=2)
"Création et mise en place des widgets servant au nom"
text_nom=StringVar()
Label(can, text="Nom").grid(column=2, row=3, sticky=E)
entree_nom=Entry(can, textvariable=text_nom)
entree_nom.grid(column=3, row=3)
"Création et mise en place des widgets servant au n° de téléphone"
text_numero=StringVar()
Label(can, text="N° de téléphone").grid(column=2, row=4, sticky=E)
entree_numero=Entry(can, textvariable=text_numero)
entree_numero.grid(column=3, row=4)
Button(can, text="Ajouter", command=ajouter).grid(column=1, row=5, sticky=E)
Button(can, text="Actualiser", command=actualiser).grid(column=2, row=5)
Button(can, text="Supprimer", command=supprimer).grid(column=3, row=5)
Button(can, text="Afficher", command=afficher).grid(column=4, row=5)
can.grid()
fen_utili.config(menu=barre_menu)
fen_utili.mainloop()
fen_utili.destroy()
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
scrollbar dans scrollbox avec TKinter [ par MHI ]
Est-ce que quelqu'un sait comment ajouter les scrollbar à une scrollbox :J'ai essayé ceci :lstFile = Tkinter.Listbox(frmMain)lstFile.place(x = 20, y =
checkButton avec TKinter [ par MHI ]
comment faire pour tester si un checkButton est coché ?
Probleme avec TKinter [ par titasse ]
Bonjour, je debute en python. J'ai un probleme lorsque je veux importer TKinter avec la commande from TKinter import * j'ai le message suivant : Imp
au sujet de Tkinter et le module turtle [ par nico1900 ]
from turtle import *forward(120)left(90) color('red') forward(80)bon en fait je voulais tester le module turtle avec l e code ci-d
Un Canvas comme dans Tkinter, mais pour wxPython [ par samurize ]
Slt tout le monde. Voila tout est dans le titre (ou a peu pres ) : Je suis à la recherche d'un module pouvant s'integrer da
Taille de widgets sous Tkinter [ par Uims ]
Bonjour, Quelqu"un saurait comment definir la taille d'un widgets sous tkinter??? Exemple: fen 1 = Tk(taille=600) J'espere que je me fait comprend
Ouverture d'un fichier windows (avec Tkinter) [ par Uims ]
Bonjour, Je travaille sous python et Tkinter et j'aurai voulu savoir comment dire a python de demarrer (comme on clique sur un fichier) une applicati
Tkinter et Python [ par Telimektar1er ]
Voila j'ai commencé e python il y a une semaine et jusqu à aujourd'hui aucun problème. Mais voilà, je viens de commencer la cr
help, faire un mastermind en python et en tkinter avant le 24 !!! [ par Crick132 ]
je suis étudiante en 2ème année, je dois réaliser un mastermind en python avec 8 couleurs et 5 combinaisons possibles.si quelqu'un
Importer une image dans Tkinter... [ par skools ]
Bonjour à tous, Et pardon à ceux à qui j'ai envoyé des messages perso, je n'arrivais pas à poster un suget dans le forum... Voilà, après des heures d
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|