begin process at 2012 05 24 05:09:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application complète

 > RÉPERTOIRE TÉLÉPHONIQUE AVEC "MULTI-COMPTE"

RÉPERTOIRE TÉLÉPHONIQUE AVEC "MULTI-COMPTE"


 Information sur la source

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application complète Classé sous :repertoire, telephone, tkinter, tkmessagebox, tkfiledialog Niveau :Initié Date de création :20/04/2007 Vu / téléchargé :4 353 / 191

Auteur : dbs669

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 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()


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture EDITEUR CROQUIS par grephit
Source avec Zip TV PROGRAM FETCHING AND PARSING FOR ANYONE WOULD KEEP TRACE ... par Senethril
Source avec une capture RECHERCHE DE DOUBLONS DANS DES DOSSIERS. par Rano Its
Source avec Zip Source avec une capture ILLUSTRATION DE SINUS ET DE COSINUS par calogerogigante
Source avec Zip Source avec une capture LE MOT LE PLUS LONG PAR DICO par Clempython

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ISOLA - MON PREMIER PROGRAMME PYTHON 3 par Debiars
Source avec Zip Source avec une capture JEU DE LA VIE SIMPLE ET GRAPHIQUE (TKINTER) EN PYTHON 3 par sodawil
Source avec Zip TPYCODE, TRADUCTEUR DE CODE par jonathan33350
TAQUIN 4*4 par fredericfabry
Source avec Zip CALCULATRICE SIMPLICISTE SOUS TKINTER par elnabo

Commentaires et avis

Commentaire de Shakan972 le 23/04/2007 14:03:42

Il y a une petite erreur au niveau de la création d'un nouveau profil je te conseille donc d'y jeter un oeil de plus tu aurais pu t'appliquer un peu plus au niveau de l'interface car personnellement je la trouve un peu désuete.

Voilà pour mes critiques à toi de voir ce que tu en penses sinon je te met 4/10.

Commentaire de aera group le 01/05/2007 16:30:16

Salut

Bon, pour commencer, on a pas le fichier "utilisateur.dbs" or il le faut pour créé un nouveau profil :( !!! Je suppose qu'il faut au début créé un fichier vierge nommé comme précédament ! Quand j'ai fait ça, ça à marcher, mais ensuite, je n'est pas très bien compris l'interface : J'ai rentrer un nom test, puis j'ai fait afficher, et la, j'avais une fenêtre avec mon mot de passe, mon identifiant et la localisation du fichier de sauvegarde ????? Je ne met pas de note parce que j'attend que tu nous apporte des précisions voir une modification du code mais ça vaut 3 !!! Néanmoins, tu à utilisé les "tkFileDialog" et les "try/except" ce qui est en soit une preuve que tu as voullu faire un projet qui tiennes la route.

Je suis moi même entrain de faire un script similaire. Dans 1 à 2 semaines, je devrais la mettre sur le site. Voila bon courrage
______
Aéra

Commentaire de aera group le 05/06/2007 14:22:56

Voila, comme promis, ma source est mise. Voir http://www.pythonfrance.com/codes/CARNET-ADRESSE_42877.aspx

 Ajouter un commentaire


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&#23 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,668 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales