IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

Fichier de configuration


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de timiti29
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut Fichier de configuration
    Bonjour tout le monde,aujourd'hui j'ai voulu essayer de faire un système de fichier de configuration.
    du genre "test.cfg" qui contiendrait par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    height=220
    width=340
    language=french
    pour pouvoir ensuite exploiter les information.
    en cherchant à cette adresse : http://zetcode.com/wxpython/tips/
    j'ai trouver un code avec wx.Config, je lais tester il marche mais il n'a pas utiliser mon fichier .cfg donc comment je peut faire pour que les information soie enregistrer dans mon fichier .cfg (pour que l'utilisateur puissent modifier en cas de besoin ou de problème.)
    Merci de vautre aide.
    Timiti29

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Apparament, wx.config te crée juste un fichier .le_nom_du_fichier_choisi...

    Si tu veux vraiment utiliser ton .cfg, soit tu trouves une autre bibliothèque, soit tu crées ton propre parseur

  3. #3
    Membre confirmé Avatar de timiti29
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Re, d'après la doc http://www.wxpython.org/docs/api/
    je vois :"This ConfigBase-derived class will use the registry on Windows, and will be a wx.FileConfig on other platforms."
    donc il faut que j'utilise wx.FileConfig.
    comment je doit utiliser pour utiliser mon fichier .cfg ?
    Merci
    timiti29

  4. #4
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Trouvé ici: http://groups.google.com/group/wxpyt...49934ab17d979e

    Here is my code using wx.FileConfig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    self.filehistory = wx.FileHistory(9) 
            self.fileConfig = wx.FileConfig(appName="ApplicationName", 
                                        vendorName="VendorName", 
                                        localFilename="file.cfg", 
                                        style=wx.CONFIG_USE_LOCAL_FILE) 
            self.filehistory.Load(self.fileConfig) 
            self.filehistory.UseMenu(file_menu) 
            self.filehistory.AddFilesToMenu()
    Et ensuite,tu peux utiliser le tuto précédent pour accéder à tes données

    Une recherche n'a jamais tué personne

  5. #5
    Membre confirmé Avatar de timiti29
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Merci mais sa fait rien ! mon fichier .cfg est toujours vide !
    (j'ai juste crée un fichier test.cfg dans le même répertoire que mon programme mais je ne lais pas remplis, il est par conséquent vierge !)
    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
    #!/usr/bin/python
    # myconfig.py
    import wx
    class MyConfig(wx.Frame):
    	def __init__(self, parent, id, title):
    		self.cfg = wx.FileConfig(appName="myconfig", vendorName="VendorName", localFilename="test.cfg", style=wx.CONFIG_USE_LOCAL_FILE)
    		if self.cfg.Exists('width'):
    			w, h = self.cfg.ReadInt('width'), self.cfg.ReadInt('height')
    		else:
    			(w, h) = (250, 250)
     
    		wx.Frame.__init__(self, parent, id, title, size=(w, h))
    		self.conteneur = wx.Panel(self, 1, size=self.GetClientSize())
     
    		wx.StaticText(self.conteneur, -1, 'Width:', (20, 20))
    		wx.StaticText(self.conteneur, -1, 'Height:', (20, 70))
    		self.sc1 = wx.SpinCtrl(self.conteneur, -1, str(w), (80, 15), (60, -1), min=200, max=500)
    		self.sc2 = wx.SpinCtrl(self.conteneur, -1, str(h), (80, 65), (60, -1), min=200, max=500)
    		wx.Button(self.conteneur, 1, 'Save', (20, 120))
     
    		self.Bind(wx.EVT_BUTTON, self.OnSave, id=1)
    		self.statusbar = self.CreateStatusBar()
    		self.Centre()
    		self.Show(True)
    	def OnSave(self, event):
    		self.cfg.WriteInt("width", self.sc1.GetValue())
    		self.cfg.WriteInt("height", self.sc2.GetValue())
    		self.statusbar.SetStatusText('Configuration saved, %s ' % wx.Now())
    app = wx.App()
    MyConfig(None, -1, 'myconfig.pyw')
    app.MainLoop()
    Merci
    Timiti29

  6. #6
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    A quel emplacement est ton test.cfg vide?
    Edit: t'as édité pendant que je postais,totale ça a répondu à ma question

    Mias bon,si t'as lu le lien que j'ai envoyé, c'est écrit ceci:
    > Where is the location of the file "file.cfg"?


    On Windows If you have HOME set in the environment then it will go
    there. Otherwise it is under your "c:\Documents and Settings\userName"
    folder, but I don't remember exactly where.
    Try searching for it with
    Explorer.
    ---------
    Traduction:
    Sous windows, si la variable d'environnement "HOME" est définie,le fichier sera ici. Sinon,c'est dans le dossier "c:\Documents and Settings\userName", mais je ne me souviens plus où exactement.Essaie de le chercher avec l'exporateur Windows

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Et "pickler" un dictionnaire, ça ne peut pas convenir ?

    Personnellement, je le fais dans une application où les préférences utilisateur sont très nombreuses, et en plus dans ce cas tu ne dois pas parser le fichier à l'ouverture, ton dico est directement utilisable, par contre pour la modification à la main c'est plus que déconseillé.

    vincent

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re,

    Citation Envoyé par timiti29 Voir le message
    J'aimerais savoir comment faire, ses plus simple !
    il est possible de crée plusieurs fichier de conf pour différent utilisateur !
    au démarrage du programme je peut demander l'utilisateur ...
    donc please comment faire ?
    merci infiniment !
    timiti29
    (sa me fera de l'entrainement le système multi-config)
    Citation Envoyé par VinsS Voir le message
    Et "pickler" un dictionnaire, ça ne peut pas convenir ?

    Personnellement, je le fais dans une application où les préférences utilisateur sont très nombreuses, et en plus dans ce cas tu ne dois pas parser le fichier à l'ouverture, ton dico est directement utilisable, par contre pour la modification à la main c'est plus que déconseillé.

    vincent
    Dans cette optique os.path.expanduser('~') te donne le répertoire personnel de l'utilisateur. Il te suffit de créer ton fichier dans ce répertoire pour que chaque utilisateurs puisse enregistrer ses préférences.
    Aprés je fais comme VinsS : mon propre dico

    Exemple (Un dico des applications préférées de l'utilisateur):

    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
    import os.path
     
    PathGeneral = os.path.join(os.path.expanduser('~'), '.monprog')
    PathProg = os.path.join(PathGeneral, 'wsbapp')
    ...
    if os.path.isdir(PathGeneral): pass
    else: os.makedirs(PathGeneral, mode=0777)
    ...
     
     
    class RemplirAppli():
        def retourADB(self, parent=None):
            AppliDeBase= {' wsbnote ': 'Editeur@de@Note', ' soffice ': 'Suite@Bureautique', ' ark ': 'Gestionnaire@d\'archive', ' icokiconedit ': 'Editeur@d\'icone', ' kaboodle ': u'Lecteur@multimédia', ' thunderbird ': 'Gestionnaire@de@courrier', ' kedit ': 'Editeur@de@texte', ' nedit ': 'Editeur@de@texte', ' kate ': 'Editeur@de@texte', ' kwrite ': 'Editeur@de@texte', ' acroread ': 'Lecteur@de@pdf', ' kpdf ': 'Lecteur@de@pdf', ' konqueror ': 'Explorateur', ' kghostview ': 'Editeur@pdf@et@ps', ' kolourpaint ': 'Editeur@d\'image', ' kuickshow ': 'Visionneuse@d\'images', ' kview ': 'Visionneuse@d\'images', ' kmail ': 'Gestionnaire@de@courrier', ' koffice ': 'Suite@Bureautique', ' kspread ': 'Tableur', ' kword ': 'Traitement@de@texte'}
            return AppliDeBase
     
        def Verif_DicoAppli(self, parent=None):
            DicoAppli = {}
            if os.path.isfile(PathProg):
                DicoProg = open(PathProg,'rb')
                lignes = DicoProg.readlines()
                for lig in lignes:
                    ind = 1
                    Longuerligne = len(lig)
                    while (ind < Longuerligne):
                        if lig[ind] == ' ':
                            cle = lig[:ind]
                            retourval = lig[ind:]
                            break
                        ind += 1
                    retourval = retourval.replace('@',' ')
                    DicoAppli[cle + ' '] = retourval[:-1]
            else:
                tmpdic = self.retourADB()
                DicoProg = open(PathProg,'w')
                for cle in tmpdic:
                    TypeDico = cle + tmpdic[cle] + os.linesep
                    retourval = tmpdic[cle]
                    retourval = retourval.replace('@',' ')
                    DicoAppli[cle] = retourval
                    TypeDico = TypeDico.encode(sys.stdin.encoding)
                    DicoProg.write(TypeDico)
                DicoProg.close()
                tmpdic.clear
            return DicoAppli
    ...
     
    AppList = RemplirAppli()
    DicoAppli = AppList.Verif_DicoAppli()
    Bon, le code date et comme le dit VinsS ce serait sans doute plus propre avec pickle plutôt que d'utiliser un caractère (@) pour séparer les clés des valeurs mais j'ai toujours eu la flegme de le retoucher...

    Tu remarqueras le .monprog qui permet de cacher le répertoire sous Linux. Sous Windows c'est ~.

    @+

  9. #9
    Membre confirmé Avatar de timiti29
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Re merci des réponses pour quoi vous me dite qu'il y a une classe pour sa ? ("ConfigParser")
    j'utilise "wx.FileConfig" ! si vous avez lu les messages plus haut vous aurez compris que j'utilise cette classe.
    De Plus le truc du "os.chdir" marche pas !
    ce n'est pas moi qui donne l'emplacement du fichier ou il est crée, ces l'ordinateur ! donc la commande serre à rien !
    Sans compté que ton code na rien avoir avec mon problème :
    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
    import os.path
     
    PathGeneral = os.path.join(os.path.expanduser('~'), '.monprog')
    PathProg = os.path.join(PathGeneral, 'wsbapp')
    ...
    if os.path.isdir(PathGeneral): pass
    else: os.makedirs(PathGeneral, mode=0777)
    ...
     
     
    class RemplirAppli():
        def retourADB(self, parent=None):
            AppliDeBase= {' wsbnote ': 'Editeur@de@Note', ' soffice ': 'Suite@Bureautique', ' ark ': 'Gestionnaire@d\'archive', ' icokiconedit ': 'Editeur@d\'icone', ' kaboodle ': u'Lecteur@multimédia', ' thunderbird ': 'Gestionnaire@de@courrier', ' kedit ': 'Editeur@de@texte', ' nedit ': 'Editeur@de@texte', ' kate ': 'Editeur@de@texte', ' kwrite ': 'Editeur@de@texte', ' acroread ': 'Lecteur@de@pdf', ' kpdf ': 'Lecteur@de@pdf', ' konqueror ': 'Explorateur', ' kghostview ': 'Editeur@pdf@et@ps', ' kolourpaint ': 'Editeur@d\'image', ' kuickshow ': 'Visionneuse@d\'images', ' kview ': 'Visionneuse@d\'images', ' kmail ': 'Gestionnaire@de@courrier', ' koffice ': 'Suite@Bureautique', ' kspread ': 'Tableur', ' kword ': 'Traitement@de@texte'}
            return AppliDeBase
     
        def Verif_DicoAppli(self, parent=None):
            DicoAppli = {}
            if os.path.isfile(PathProg):
                DicoProg = open(PathProg,'rb')
                lignes = DicoProg.readlines()
                for lig in lignes:
                    ind = 1
                    Longuerligne = len(lig)
                    while (ind < Longuerligne):
                        if lig[ind] == ' ':
                            cle = lig[:ind]
                            retourval = lig[ind:]
                            break
                        ind += 1
                    retourval = retourval.replace('@',' ')
                    DicoAppli[cle + ' '] = retourval[:-1]
            else:
                tmpdic = self.retourADB()
                DicoProg = open(PathProg,'w')
                for cle in tmpdic:
                    TypeDico = cle + tmpdic[cle] + os.linesep
                    retourval = tmpdic[cle]
                    retourval = retourval.replace('@',' ')
                    DicoAppli[cle] = retourval
                    TypeDico = TypeDico.encode(sys.stdin.encoding)
                    DicoProg.write(TypeDico)
                DicoProg.close()
                tmpdic.clear
            return DicoAppli
    ...
     
    AppList = RemplirAppli()
    DicoAppli = AppList.Verif_DicoAppli()
    Auriez vous compris mon problèmes ?
    comment faire pour que mon fichier ".cfg" sois dans le même dossier que le .pyw AVEC la commande wx.FileConfig ?
    mon code pour le ".cfg" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.cfg = wx.FileConfig(appName="myconfig", vendorName="VendorName", localFilename="test.cfg", style=wx.CONFIG_USE_LOCAL_FILE)
    En espérant que ça vous aide !
    timiti29
    PS: J'aimerais un code compatible Linux/Windows si possible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Fichier de configuration
    Par Xavinou dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 26/09/2005, 23h02
  2. Réponses: 4
    Dernier message: 09/09/2005, 12h59
  3. [Log4j] fichier de configuration ou XML ?
    Par nabilblk dans le forum Logging
    Réponses: 2
    Dernier message: 02/09/2005, 16h42
  4. [langage] Lire un fichier de configuration
    Par bobinoo dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2004, 15h53
  5. Les fichiers de configuration de comptes avec Samba
    Par tomnie dans le forum Réseau
    Réponses: 4
    Dernier message: 18/03/2004, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo