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

Bibliothèques tierces Python Discussion :

incrémenter le nom d'une variable ConfigParser et PyQt


Sujet :

Bibliothèques tierces Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 50
    Points : 25
    Points
    25
    Par défaut incrémenter le nom d'une variable ConfigParser et PyQt
    Bonjour,

    je cherche à afficher des informations provenant d'un fichier de configuration dans un QListWidget.
    Je dois compter le nombre d'utilisateurs dans le fichier de config et créer le même nombre d'items pour les afficher

    le fichier de config:
    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
     
    [8500]
    fullname = ARTHUR
    username = ARTHUR
    secret=1232
    type=friend
    host=dynamic
    dtmfmode=rfc2833
    context = work
     
    [8501]
    fullname = Fred
    username = Fred
    secret=3243
    type=friend
    host=dynamic
    dtmfmode=rfc2833
    context = work

    Je parviens à compter le nombre d'utilisateurs référencés mais pas à créer le nombre d'items correspondant... là je bloque
    dans ce code, j'aimerais donc automatiser l'item2 et item2.setText... et les suivants
    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
     
    #Listing
    class MenuListing(QtGui.QDialog):
        def __init__(self, parent = None):
            super(MenuListing, self).__init__(parent)
            self.ui = Ui_DialogList()
            self.ui.setupUi(self)
            if flagmenu == 1 :
                config = configparser.RawConfigParser()
                config.read(rephome+'/AsteriskSTQN_ConfigServeur/users.conf')
                user = 8500
                while 1:
                    item = QtGui.QListWidgetItem(self.ui.listWidget)
                    item.setText("Numero :  "+str(user)+"  Nom :  "+config.get(str(user),'fullname')+"  Mot de passe :  "+config.get(str(user),'secret'))
                    user = user+1
                    if config.has_section(user) == False:
                        break
                print(user)
    J'ai lu qu'il était possible de le faire avec une liste ou un dictionnaire mais je ne comprends pas bien comment.
    Quelqu’un peut m'aiguiller ?
    Merci

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Il y a quelque chose avec config.has_section(user) qui retourne True pour le premier (8500) et False pour le reste.

    En intercalant un print, on peut le voir.

    Essaye plutôt quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                for user in config.sections():
                    item = QtGui.QListWidgetItem(self.ui.listWidget)
                    item.setText("Numero : %s  Nom : %s  Mot de passe :  %"
                                    %(user, config.get(user, 'fullname'), 
                                      config.get(user, 'secret'))

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Merci pour ton aide, VinsS.

    Mais j'ai un soucis avec ton code: En fait, j'ai aussi une première section [general] dans mon fichier de config à laquelle je ne dois pas toucher.

    Avec cette ligne for user in config.sections(): il cherche aussi dans la section [general] et m'indique une erreur car il n'y trouve pas les mêmes options..


    mon fichier de config complet (le nombre de section [8500], [8501], etc.. sera variable)
    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
     
    [general]
     
    fullname = New User
    userbase = 6000
    hasvoicemail = yes
    vmsecret = 1234
    canreinvite=yes
    hassip = yes
    hasiax = yes
    ;hash323 = yes
    hasmanager = no
    callwaiting = yes
    threewaycalling = yes
    callwaitingcallerid = yes
    transfer = yes
    canpark = yes
    cancallforward = yes
    callreturn = yes
    callgroup = 1
    pickupgroup = 1
    ;nat = yes
     
    [8500]
    fullname = ARTHUR
    username = ARTHUR
    secret=1232
    type=friend
    host=dynamic
    dtmfmode=rfc2833
    context = work
     
    [8501]
    fullname = Fred
    username = Fred
    secret=3243
    type=friend
    host=dynamic
    dtmfmode=rfc2833
    context = work

    et ma fonction:
    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
     
    class MenuListing(QtGui.QDialog):
        def __init__(self, parent = None):
            super(MenuListing, self).__init__(parent)
            self.ui = Ui_DialogList()
            self.ui.setupUi(self)
            if flagmenu == 1 :
                config = configparser.RawConfigParser()
                config.read(rephome+'/AsteriskSTQN_ConfigServeur/users.conf')
                user = 8500
                while 1:
                    for user in config.sections():
                        item = QtGui.QListWidgetItem(self.ui.listWidget)
                        item.setText("Numero : %s  Nom : %s  Mot de passe :  %")%(user, config.get(user, 'fullname'), config.get(user, 'secret'))
                    user += 1
    Et l'erreur:
    Traceback (most recent call last):
    File "/Users/macbookpro15/Desktop/PycharmProjects/VoIP2/main.py", line 196, in afficheMenuListing
    mu = MenuListing()
    File "/Users/macbookpro15/Desktop/PycharmProjects/VoIP2/main.py", line 211, in __init__
    item.setText("Numero : %s Nom : %s Mot de passe : %")%(user, config.get(user, 'fullname'), config.get(user, 'secret'))
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/configparser.py", line 765, in get
    raise NoOptionError(option, section)
    configparser.NoOptionError: No option 'secret' in section: 'general'

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Suffit de filtrer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for user in config.sections():
        if user.startswith('8'):
            ...

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    En fait config.has_section(user) me retourne False même quand la section existe.
    Qu'est-ce que je fais mal?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                config = configparser.RawConfigParser()
                config.read(rephome+'/AsteriskSTQN_ConfigServeur/users.conf')
                user = 8500
                print (user, config.has_section(user))
                user += 1
                print (user, config.has_section(user))
                user += 1
                print (user, config.has_section(user))
    résultat: (pourtant la section [8500] et [8501] existent bien dans mon fichier de config, pas la [8502])
    8500 False
    8501 False
    8502 False

  6. #6
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ce sont des chaînes de caractères pas des entiers.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2015
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Autant pour moi, je pensais l'avoir essayé !!

    Merci bcp VinsS

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

Discussions similaires

  1. incrémenter le nom d'une variable
    Par papimcha dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/05/2008, 15h23
  2. Incrémenter le nom d'une variable en Java
    Par jmnicolas dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 08/04/2008, 16h05
  3. Incrémenter le nom d'une variable
    Par wulfram dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/03/2008, 08h40
  4. Réponses: 37
    Dernier message: 02/03/2006, 01h58
  5. Incrémenter le NOM d'une variable
    Par Mors_Ubyte dans le forum Access
    Réponses: 1
    Dernier message: 03/01/2006, 18h47

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