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 :

QVariant erreur sur mac [QtCore]


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut QVariant erreur sur mac
    Bonjour,


    Lorsque j'essaye d'utiliser la Classe 'QVariant()' je me retrouve toujours avec cette erreur :
    AttributeError: 'module' object has no attribute 'QVariant'

    Est ce que quelqu'un d'entre vous aurais une idée sur ce problème ?

    Vous remerciant.


    Cordialement.


    Configuration:
    Python 2.7
    PySide 1.1.1
    Qt 4.8.2
    Mac OSX 10.8.3





    Labo d'exemple
    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
     
    # -*- coding: utf-8 -*-
     
     
    from PySide import QtCore, QtGui
     
    class CheckBoxDelegate(QtGui.QItemDelegate):
     
        def __init__(self, parent=None):
            QtGui.QItemDelegate.__init__(self, parent)
            self.chkboxSize = 19 #?!
     
        def createEditor(self, parent, option, index):
            chkbox = QtGui.QCheckBox(parent)
            chkbox.setText('')
            chkbox.setTristate(False) #只用两个状态
            left = option.rect.x() + (option.rect.width() - self.chkboxSize) / 2
            top  = option.rect.y() + (option.rect.height() - self.chkboxSize) / 2
            chkbox.setGeometry(left, top, self.chkboxSize, self.chkboxSize)
            return chkbox
     
        def paint(self, painter, option, index):
            value = index.data().toBool()
            opt = QtGui.QStyleOptionButton()
            opt.state |= QtGui.QStyle.State_Enabled | (QtGui.QStyle.State_On if value else QtGui.QStyle.State_Off)
            opt.text = ''
            left = option.rect.x() + (option.rect.width() - self.chkboxSize) / 2
            top  = option.rect.y() + (option.rect.height() - self.chkboxSize) / 2
            opt.rect = QtGui.QRect(left, top, self.chkboxSize, self.chkboxSize)
            QtGui.QApplication.style().drawControl(QtGui.QStyle.CE_CheckBox, opt, painter)
     
        def updateEditorGeometry(self, editor, option, index):
            pass
     
    ###############################################################################
     
    if __name__ == '__main__':
     
      import sys
     
      app = QtGui.QApplication(sys.argv)
     
      table = QtGui.QTableView()
      model = QtGui.QStandardItemModel(3, 3, table)
      model.setHorizontalHeaderLabels(['Name', 'Description', 'Animal?'])
      model.setData(model.index(0, 0, QtCore.QModelIndex()), QtCore.QVariant('Squirrel'))
      model.setData(model.index(0, 1, QtCore.QModelIndex()), QtCore.QVariant(u'test'))
      model.setData(model.index(0, 2, QtCore.QModelIndex()), QtCore.QVariant(True))
      model.setData(model.index(1, 0, QtCore.QModelIndex()), QtCore.QVariant('Soybean'))
      model.setData(model.index(1, 1, QtCore.QModelIndex()), QtCore.QVariant(u'essai'))
      model.setData(model.index(1, 2, QtCore.QModelIndex()), QtCore.QVariant(False))
      table.setModel(model)
      table.setItemDelegateForColumn(2, CheckBoxDelegate(table))
      table.resizeColumnToContents(1)
      table.horizontalHeader().setStretchLastSection(True)
      table.setGeometry(80, 20, 400, 300)
      table.setWindowTitle('Grid + CheckBox Testing')
      table.show()
     
      sys.exit(app.exec_())
    Erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Traceback (most recent call last):
      File "/Users/user/Desktop/essai.py", line 45, in <module>
        model.setData(model.index(0, 0, QtCore.QModelIndex()), QtCore.QVariant('Squirrel'))
    AttributeError: 'module' object has no attribute 'QVariant'
    [Finished in 1.1s with exit code 1]

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    QVariant, comme QString et QStringList n'ont pas été exportés vers PySide.

    Auparavant il y avait une page de la doc de PySide qui parlait de cela, mais il semble que tout cela à disparu.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    QVariant, comme QString et QStringList n'ont pas été exportés vers PySide.

    Auparavant il y avait une page de la doc de PySide qui parlait de cela, mais il semble que tout cela à disparu.
    Merci pour l'information.

    Je suppose qu'il ne l'ont pas été vers PyQt ?

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai eu le même problème avec PyQt4: en passant de Python 2 à Python 3, QVariant et QString ont disparu et génèrent une erreur. Mais la doc en parle:

    Voir le chapitre qui s'appelle "PyQt4 and Python v3":

    http://pyqt.sourceforge.net/Docs/PyQt4/

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    J'ai eu le même problème avec PyQt4: en passant de Python 2 à Python 3, QVariant et QString ont disparu et génèrent une erreur. Mais la doc en parle:

    Voir le chapitre qui s'appelle "PyQt4 and Python v3":

    http://pyqt.sourceforge.net/Docs/PyQt4/
    merci.

    J'avais bien vu ces incompatibilités, certains proposent d'utiliser SIP pour solutionner le problème, ce qui n'a pas l'air de fonctionner, mais je ne pensais pas que la classe était supprimé.

    Avec ce code j'ai voulu vérifier, et oui QVariant a bien été supprimé de PySide.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import sys
    from PySide import QtCore, QtGui
     
    try:
        from PySide.QtCore import QVariant
    except ImportError:
        app = QtGui.QApplication(sys.argv)
        QtGui.QMessageBox.critical(None, "QVariant Capabilities",
                "Your Qt installation does not have QVariant support.",
                QtGui.QMessageBox.Ok | QtGui.QMessageBox.Default,
                QtGui.QMessageBox.NoButton)
        sys.exit(1)

    Maintenant il me faut trouver une solution alternative, ce qui me fait mal a la tête.

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Je ne prendrais pas ça pour un problème mais pour un avantage: dans la mesure où PyQt4/PySide convertit automatiquement le QVariant dans le bon type Python et ceci dans les 2 sens, ça simplifie le code: on ne manipule plus que des objets Python. A voir cependant si cette conversion a une limite.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/07/2011, 11h58
  2. Erreur lecture fichier sur mac
    Par duuh_ dans le forum Fortran
    Réponses: 8
    Dernier message: 14/04/2011, 20h02
  3. python et unicode => erreur sur freebsd (et pas sur mac)
    Par and1hotsauce dans le forum Général Python
    Réponses: 4
    Dernier message: 16/02/2011, 10h46
  4. Erreur utilisation UDF sur Mac OS
    Par mercure07 dans le forum Administration
    Réponses: 4
    Dernier message: 26/08/2009, 10h54
  5. Erreur de lancement sur mac
    Par pingoui dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 29/05/2009, 22h43

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