Salut a vous tous,
Est-ce que quelqu'un aurait la solution a savoir que j'ai créé un petit logiciel pour entrer des numéros de téléphone ainsi que leur nom et quand j'écris un caractère accentué j'ai un message d'erreur a l'entrer dasns la base de donné et.
Toutefois si j'utilise cette même routine dans le mode console, cela fonctionne très bien.
Voici le code en espérant que vous trouverez une solution.
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
#!/usr/bin/python
# *- coding: iso-8859-1 -*
import sys
import os
import string
import wx #importation du modulegraphique wx
import winsound
ID_PARENT = 1000 #control ID de la fenetre principale
 
 
 
#classe fenetre principalemenus et boutons
class LesMenus(wx.Frame):
 def __init__(self, titre):
  wx.Frame.__init__(self, None, ID_PARENT, title = titre, size = (800, 600))
  self.panel = wx.Panel(self, -1, pos=(10,50),size=(300,400))
  self.panel.SetBackgroundColour('black')
  menuFichier = wx.Menu(style = wx.MENU_TEAROFF)
  menuFichier.Append(wx.ID_EXIT, "&Quitter\tCTRL+q") 
  menuAide = wx.Menu(style = wx.MENU_TEAROFF)
  menuAide.Append(wx.ID_ABOUT, "&A propos ...\tCTRL+N")
 
  #Barre de menu et affichage des menus dans cette barre
  menuBarre = wx.MenuBar() 
  menuBarre.Append(menuFichier, "&Fichier") 
  menuBarre.Append(menuAide, "&Aide") 
  self.SetMenuBar(menuBarre) 
 
  #creation des boutons
  boutonNiveau1 = wx.Button(self.panel, -1, "Recherche", pos=(200, 200))
  boutonNiveau2 = wx.Button(self.panel, -1, "Ajouter", pos=(200, 250))
 
  boutonAide = wx.Button(self.panel, -1, "Aide", pos=(600, 415))
  boutonExit = wx.Button(self.panel, -1, "Quitter", pos=(700, 415))
 
  #evenements des menus
  wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit) 
  wx.EVT_MENU(self, wx.ID_ABOUT, self.OnAbout) 
 
  #evenements des boutons
  self.Bind(wx.EVT_BUTTON, self.OnExit, boutonExit)
  self.Bind(wx.EVT_BUTTON, self.OnAbout, boutonAide)
  self.Bind(wx.EVT_BUTTON, self.search, boutonNiveau1)
  self.Bind(wx.EVT_BUTTON, self.EcrireFichier, boutonNiveau2)
 
 
 #definition du menu quitter
 def OnExit(self, evt): 
 
  self.Destroy() 
 
 #definition du menu a propos
 def OnAbout(self, evt):
  d = wx.MessageDialog(self, "Petit ageinda", "A propos :Diagnostique ", wx.OK)
  d.ShowModal()
  d.Destroy()
 
 
 def search(self, evt):
#nmf est nom de mon fichier
  nmf = 'lecture.txt'
#db est un variable quelconque, don le nom de mon fichier et un paramètre r pour read 
  db = file(nmf,'r')
#Db.readlines pour lire tous les lignes. A ne pas oublier le s a la fin de line
  liste = db.readlines()
 
#Db.close veut dire fermer le fichier.
  db.close()
  n = wx.TextEntryDialog(self,"Entrez le nom ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
#afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
  reponse = n.ShowModal()
#Récupération du text entré
  nn = n.GetValue()
  if reponse == wx.ID_OK or n == "":
   winsound.PlaySound('c:/Python25/wav_tel/bing.wav', winsound.SND_NODEFAULT)
 
   #n.Destroy()
  #recuperation du nombre en string
  for i in liste:
   if i.find(nn) <> -1:
    winsound.PlaySound('c:/Python25/wav_tel/bing.wav', winsound.SND_NODEFAULT)
    n = wx.MessageDialog(self, "le résultat est:  "+i, "affichage du résultat", wx.OK) 
    n.ShowModal()
    n.Destroy()
    return
 
 
 def EcrireFichier(self, evt):
 
  fichier = open('lecture.txt', 'a')
  ligne = wx.TextEntryDialog(self,"Entrez le texte ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
#afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
  reponse = ligne.ShowModal()
#Récupération du text entré
  nn = ligne.GetValue()
  #recuperation du nombre en string
  if nn != '':
   fichier.write(nn +"\n")
   fichier.close()
   ligne.Destroy()
   return
 
#la classe de l'application
class MonApp(wx.App): 
 def OnInit(self): 
  fen = LesMenus("Numéro de Téléphone") 
  fen.Show(True) 
  self.SetTopWindow(fen) 
  return True 
 
#boucle principale
app = MonApp()
app.MainLoop()