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

PyQt Python Discussion :

erreur avec QDouble Validator


Sujet :

PyQt Python

  1. #1
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut erreur avec QDouble Validator
    Bonjour à tous,

    J'ai une erreur que je ne comprend pas sur la ligne en gras située dans cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def validate(self, text, pos):
                        text = str(text.toLatin1())
                        if text and text[0] in "+-":
                            if len(text)<=1 or not text[1] in "+-":
                                text = text[1:]
                        res, pos = QDoubleValidator.validate(text, pos)
                        if res == QValidator.Invalid:
                            text = text.lower()
                            if text == "inf":
                                res = QValidator.Acceptable
                            elif "inf".startswith(text):
                                res = QValidator.Intermediate
    j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: QDoubleValidator.validate(QString, int) -> (QValidator.State, int): argument 2 has unexpected type 'str'
    ça ne doit pas être bien compliqué mais étant noob sur Qt et pas très à l'aise en python je nage totalement.
    Si quelqu'un a une idée...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    apparemment ton 2e argument pos est de type string alors qu'il s'attend à avoir un int.

  3. #3
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut
    merci pour ta réponse

    concernant le deuxième argument, c'est ce que j'ai pensé au début, mais j'ai essayé avec ce code:

    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
    def validate(self, text, pos):
                        text = str(text.toLatin1())
                        if text and text[0] in "+-":
                            if len(text)<=1 or not text[1] in "+-":
                                text = text[1:]
                        print "pos = "
                        print pos
                        print type(pos)
                        res, pos = QDoubleValidator.validate(self, text, pos)
                        if res == QValidator.Invalid:
                            text = text.lower()
                            if text == "inf":
                                res = QValidator.Acceptable
                            elif "inf".startswith(text):
                                res = QValidator.Intermediate

    pour ce résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pos =
    1
    <type 'int'>
    Traceback (most recent call last):
      File "blabla.py", line 64, in validate
    TypeError: QDoubleValidator.validate(QString, int) -> (QValidator.State, int): argument 2 has unexpected type 'str'
    du coup c'est bien un int...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    en essayant ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     res, pos = QDoubleValidator().validate(text, pos)

  5. #5
    Membre actif
    Profil pro
    ingénieur
    Inscrit en
    Novembre 2011
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Novembre 2011
    Messages : 165
    Points : 259
    Points
    259
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TypeError: arguments did not match any overloaded call:
      QDoubleValidator(QObject): not enough arguments
      QDoubleValidator(float, float, int, QObject): not enough arguments

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    il s'attend à un objet en paramètre..
    et avec??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     res, pos = QDoubleValidator(self).validate(text, pos)

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 480
    Points : 9 277
    Points
    9 277
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Heureusement, il y a des tas de choses intéressantes dans les manuels, y compris concernant "QDoubleValidator::validate ( QString & input, int & pos )":

    By default, the pos parameter is not used by this validator.
    Donc: il faut mettre un entier comme 2ème argument, mais il ne l'utilise pas, et il le renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    self.valid = QtGui.QDoubleValidator(5.0, 9.0, 5, self)
    nb = 7.59845
    v, p = self.valid.validate(nb, 0)
    # on reçoit p=0 qui n'a aucun intérêt
    # exploitation de v: 0=>Invalid, 1=>Intermediate, 2=>Acceptable

Discussions similaires

  1. [W3C] Erreur avec W3C validator
    Par alaninho dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 31/03/2014, 22h10
  2. erreur avec socket "un argument non valide à ete fournie"
    Par Abdelweheb dans le forum Réseau
    Réponses: 1
    Dernier message: 16/05/2012, 09h14
  3. [XL-2003] Message d'erreur avec Validation.Add
    Par Alain BENOIST dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/05/2009, 11h27
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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