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 :

Problème de readline() [Python 2.X]


Sujet :

wxPython

  1. #1
    Membre à l'essai
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Problème de readline()
    Bonjour,

    vous me connaissez peut-être sous le pseudo de Fawn_noOb_wxPython, je ne me souviens malheureusement plus du mdp et je n'ai plus accès à la boîte mail avec laquelle je l'ai crée....

    Bref revenons en à nos moutons...Je ne vais pas poster le code entier je vais faire dans les grandes lignes

    J'ai une fonction sur un élément de wx.Toolbar:
    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
     
    #Le tool      
    pays=toolbar.AddTool(ID_CHANGEPAYS,"Langue",imgpays[langue],shortHelp=str(aide[langue]))
     
    #Le bind sur l'event (en gros on click dessus)
    self.Bind(wx.EVT_TOOL,self.changepays,pays)
     
    #La fonction
     def changepays(self,evt):
            global langue
            choices=["French","English"]
            dlg=wx.SingleChoiceDialog(self,"Choisir une langue","Choix du langage",choices)
            liste_choix=dlg.ShowModal()
            if liste_choix==wx.ID_OK :
                choix=str(dlg.GetSelection())
                if choix=="0":
                    with open("lang.conf","w")as ls:
                        ls.write(choix)
                        langue=0
                        self.refresh_app()
                if choix=="1":
                    with open("lang.conf","w")as ls:
                        ls.write(choix)
                        langue=1
                        self.refresh_app()
            evt.Skip()
    Qui appelle donc une autre fonction "refresh_app":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #La fonction
    def refresh_app(self):
            global langue
            with open("lang.conf","r")as langage:
                res=langage.readline()#Pourquoi ne lit qu'une fois ???!!!! A reparer !
                print res
                langue=1 #Réglage histoire que ça tourne je le supprimerai après
    Du coup mon problème est que le readline() se fait bien la 1ere fois mais ensuite à chaque appel de la fonction il me renvoie une valeur vide ''

    Pourtant dans le fichier "lang.conf" ça écrit bien 1 et 0 à chaque fois que l'on change de pays....Je ne comprends pas où je fais une erreur....Help svp

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Peut-être que le fait que tu essaie d'ouvrir deux fois le même fichier pose problème. Car tu appelles ta méthode refresh_app qui tente d'ouvrir le fichier lang.conf en lecture à un endroit de ton code où le même fichier est déjà ouvert en écriture. Je n'est pas testé, c'est juste une spéculation, mais désindente tes appels à cette méthode d'un niveau pour voir ce qui se passe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if choix == "0":
        with open("lang.conf", "w") as ls:
            ls.write(choix)
            langue = 0
        self.refresh_app()
     
    if choix == "1":
        with open("lang.conf", "w") as ls:
            ls.write(choix)
            langue = 1
        self.refresh_app()
    D'ailleurs ce passage pourrait s'écrire de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if choix in ['0', '1']:
        with open('lang.conf', 'w') as ls:
            ls.write(choix)
            langue = int(choix)
        self.refresh_app()
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre à l'essai
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Haha ouais en effet....Je n'ai pas testé mais je pense que c'est ça....Je suis un boulet quand je code en étant fatigué....

    Merci pour ta réponse, je passe le message en résolu dès que j'ai testé

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

Discussions similaires

  1. Petit problème avec la fonction readfile
    Par laurentSc dans le forum Langage
    Réponses: 4
    Dernier message: 25/10/2009, 14h37
  2. Problème Cancelio sur un readfile asynchrone
    Par patou21 dans le forum Windows
    Réponses: 1
    Dernier message: 07/11/2008, 12h06
  3. Problème avec readFile
    Par cDebNew dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2007, 12h19
  4. Réponses: 8
    Dernier message: 05/06/2007, 11h09
  5. Réponses: 10
    Dernier message: 22/05/2007, 14h58

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