Se connecter / S'enregistrer

Résolu Bug répertoire téléphonique.

Solutions (1)
Tags :
  • Python
  • Programmer
  • Programme
  • Programmation
  • Bug
|
Bonsoir à tous,

Gros problème, je dois faire un répertoire téléphonique sur Python avec TKinter. Le programme doit être un répertoire téléphonique permettant d'ajouter, de rechercher par nom et prénom, et de rechercher par n° de tél un contact.... Pour ajouter, mon programme fonctionne, mais pas du tout pour les deux fonctions de rechercher !!! Pouvez-vous m'aidez ?

Merci d'avance

  1. #On importe la bibliotèhque tkinter
  2. from tkinter import *
  3. #On dit quelle interface on veut: Ici une fenêtre
  4. class Interface(Frame):
  5. """Fenêtre Principale."""
  6.  
  7. #On définis toutes les fonctions que l'on va utiliser et qui vont nous servir pour les commandes des bouttons(def...)
  8. def RechercheTel1(Nom,Prenom,Longueur) :
  9. y = entr2.get()
  10. x = entr1.get()
  11. n = Longueur
  12. i = 0
  13. while i < n and (y!= prenom[i] or x!= nom[i]):
  14. i = i + 1
  15. if i == n and x!= x :
  16. print("brake")
  17. break
  18. print(i)
  19. if i <= n-1:
  20. return(i)
  21. else :
  22. return (-30)
  23. def RechercheTel():
  24. x = entr1.get()
  25. y = entr2.get()
  26. i = RechercheTel1(x,y,n)
  27. if i == -30 :
  28. print('Inconnu')
  29. else :
  30. print(tel[i])
  31. def RechercheNP1(Tel,Longueur) :
  32. z = entr3.get()
  33. i = 0
  34. n = Longueur
  35. while i < n and z!= tel[i]:
  36. i = i + 1
  37. if i < n:
  38. return (i)
  39. else :
  40. return(-30)
  41. def RechercheNP():
  42. z = entr3.get()
  43. i = RechercheNP1(z,n)
  44. if i == -30 :
  45. print('Inconnu')
  46. else :
  47. print(prenom[i])
  48. print(nom[i])
  49. def Ajouter():
  50. x = entr1.get()
  51. y = entr2.get()
  52. z = entr3.get()
  53. liste = []
  54. fichier = open("repertoire.txt", 'r')
  55. liste = fichier.readlines()
  56. l = len(liste)
  57. for i in range (0,l) :
  58. liste[i] = (liste[i].replace("\n", " "))
  59. liste.append(x)
  60. liste.append(y)
  61. liste.append(z)
  62. print (liste)
  63. fichier = open("repertoire.txt", 'w')
  64. for terme in liste :
  65. fichier.write(str(terme)+"\n")
  66. fichier.close()
  67. liste = []
  68. prenom = []
  69. nom = []
  70. tel = []
  71. #remplissage du répertoire
  72. fichier = open("repertoire.txt", 'r')
  73. liste = fichier.readlines()
  74. l = len(liste)
  75. for i in range(0,l) :
  76. liste[i] = (liste[i].replace("\n",""))
  77. i = 0
  78. while i <= l-3 :
  79. prenom.append(liste[i])
  80. nom.append(liste[i+1])
  81. tel.append(liste[i+2])
  82. i = i + 3
  83. print (prenom)
  84. print (nom)
  85. print (tel)
  86. n = len(nom)
  87.  
  88. #Principal:
  89. #On crée notre interface
  90. fenetre = Tk()
  91. fenetre.title('Répertoire Téléphonique')
  92. fenetre['bg']='blue'
  93. fenetre.geometry('625x125+600+400')
  94.  
  95. #Création et mise en place des labels
  96. Label(fenetre, text='Prenom : ',fg="black", bg="blue").grid(row=1,column=1, sticky=W)
  97. Label(fenetre, text='Nom : ',fg="black", bg="blue").grid(row=2,column=1, sticky=W)
  98. Label(fenetre, text='Telephone : ',fg="black", bg="blue").grid(row=3,column=1, sticky=W)
  99. #Création des Entrées
  100. x = StringVar()
  101. entr1 = Entry(fenetre, textvariable=x)
  102. x.set('')
  103. y = StringVar()
  104. entr2 = Entry(fenetre, textvariable=y)
  105. y.set('')
  106. z = StringVar()
  107. entr3 = Entry(fenetre, textvariable=z)
  108. z.set('')
  109. #Position des entrées
  110. entr1.grid(row=1,column=2)
  111. entr2.grid(row=2,column=2)
  112. entr3.grid(row=3,column=2)
  113. #Création, mise en place et on dit quelle commande définit précédemmant doit faire les Boutons
  114. Button(fenetre, text=' Rechercher Nom/Prénom ',command=RechercheNP).grid(row=4,column=0)
  115. Button(fenetre, text=' Recherche N° ',command=RechercheTel).grid(row=4,column=1)
  116. Button(fenetre, text=' Ajouter ',command=Ajouter).grid(row=4,column=2)
  117.  
  118. #Démarrage de la fenêtre
  119. #Et extincion de la fenêtre
  120. fenetre.mainloop()
  121. fenetre.destroy()
  • OmaR a édité ce message
  • andrelec1 a édité ce message
  • andrelec1 a édité ce message
Contenus similaires
Meilleure solution
partage
|
Comme dans tes fonctions, tu utilises des variables globales, en début de ta fonction, indique qu'elles sont globales:
  1. def RechercheNP():
  2. global n, tel, nom, prenom


Si tu mets tout dans une classe, pas besoin de les déclarer en global, tu utilise self.prenom à la place de prenom (partout)


En lisant ton code, tu peux améliorer certaines choses.

Pour lire les ligne d'un fichier, je trouve plus simple de faire:
  1. liste = fichier.read().split("\n")


Pour extraire les nom, prenom et tel, je trouve plus simple d'utiliser le saut dans l'extraction de liste:
  1. prenom = liste[::3]
  2. nom = liste[1::3]
  3. tel = liste[2::3]


Pour l'écriture dans le fichier, tu peux éviter la boucle:
  1. fichier.write("\n".join(liste))


Pour savoir si un élément elt dans dans une liste, tu peux faire:
  1. if elt in l:
  2. position = l.index(elt)
  3. #...
  • Dreamcaster a sélectionné cette solution comme la meilleure réponse
  • Commenter cette solution |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS