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 :

Création Fenetre - Erreur : 'NoneType' object has no attribute 'setObjectName' [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2020
    Messages
    0
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2020
    Messages : 0
    Points : 213
    Points
    213
    Par défaut Création Fenetre - Erreur : 'NoneType' object has no attribute 'setObjectName'
    Bonjour à toutes et à tous !

    Je suis en train de coder une petite application contenant de petits outils de calculs et de conversion divers.
    Le but est de partir d'une fenêtre d'accueil avec différents boutons qui permettront d'ouvrir des fenêtres secondaires contenant les différents outils.

    J'avais débuté sur Tkinter mais pour plus de confort j'ai attaqué en PyQt (et je suis complètement novice).

    J'en arrive à mon problème car il y en a bien un !
    Je viens de faire mes deux premières fenêtres via QtDesigner, j'ai converti mes fichiers .ui en .py, tout va bien jusque là.
    Je voulais dans un premier temps juste tester l'ouverture de la fenêtre (step by step).

    Et voici la fameuse erreur : AttributeError: 'NoneType' object has no attribute 'setObjectName'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AttributeError: 'NoneType' object has no attribute 'setObjectName'
    Je pense voir d'où vient le problème mais je n'arrive pas à le résoudre.

    Voici le début de mon fichier accueil.py, qui contient le code de ma fenetre d'accueil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from PyQt5 import QtCore, QtGui, QtWidgets
     
    class Ui_Aide_aux_calculs_et_conversions(object):
        def setupUi(self, Aide_aux_calculs_et_conversions):
            Aide_aux_calculs_et_conversions.setObjectName("Aide_aux_calculs_et_conversions")
            Aide_aux_calculs_et_conversions.resize(950, 430)
            palette = QtGui.QPalette()
            brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
            brush.setStyle(QtCore.Qt.SolidPattern)
    et voici le code pour l'ouverture de la fenêtre :
    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
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    import os,sys
     
    #improtation des GUI
    from accueil import *
     
     
    class FenetreAccueil(QWidget,Ui_Aide_aux_calculs_et_conversions):
     
        def __init__(self,parent=None):
            QWidget.__init__(self)
            self.setupUi(parent)
     
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        main = FenetreAccueil()
        main.show()
        sys.exit(app.exec_())
    Je me suis aidée de ce tutoriel, en appliquand le méthode de l'héritage multiple : https://www.google.fr/url?sa=t&rct=j...28M4cpAyaNULnt

    Après avoir cherché l'origine de l'erreur j'ai cru comprendre que cela venait du fait que je passais parent=none en argument à setupUi.
    Le soucis c'est que j'ai essayé plusieurs choses mais je ne trouve pas la solution.

    Merci d'avance pour votre aide


    Ps :
    j'ai testé cette méthode qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class FenetreAccueil(QWidget):
     
        def __init__(self,parent=None):
            super(FenetreAccueil,self).__init__(parent)
            self.ui=Ui_Aide_aux_calculs_et_conversions()
            self.ui.setupUi(self)
    Mais j'aimerai comprendre pourquoi la première ne fonctionne pas.

  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,

    C'est justement parce que tu passais None au lieu du widget en argument que cela ne passais pas.

    Maintenant si c'est ta fenêtre principale, c'est plutôt QMainWindow que QWidget que tu devrais utiliser.

    Avec une QMainWindow tu pourras avoir une barre de menu et une barre de status, entre autres avantages.

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2020
    Messages
    0
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2020
    Messages : 0
    Points : 213
    Points
    213
    Par défaut
    Merci pour la réponse rapide.

    Citation Envoyé par VinsS Voir le message
    None au lieu du widget en argument
    Donc si j'ai bien compris à la place de parent=None je passe QWidget ? Ou son nom ?
    Désolée j'ai toujours un peu de mal avec ça.


    Citation Envoyé par VinsS Voir le message
    Avec une QMainWindow tu pourras avoir une barre de menu et une barre de status, entre autres avantages.
    Concernant la QMainWindow, dans ce cas je n'ai pas besoin de barre de menu. Mais j'aimerai bien savoir quelles sont les autres avantages potentiels ?

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2020
    Messages
    0
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2020
    Messages : 0
    Points : 213
    Points
    213
    Par défaut
    Pour info si le problème arrive un jour à quelqu'un voici la solution :
    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
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    import os,sys
     
    #improtation des GUI
    from accueil import *
     
     
    class FenetreAccueil(QWidget,Ui_Aide_aux_calculs_et_conversions):
     
        def __init__(self,parent=None):
            QWidget.__init__(self)
            self.setupUi(parent)
     
     
    if __name__ == "__main__":
        a=QApplication(sys.argv)
        f=QWidget()
        c=FenetreAccueil(f)
        f.show()
        r=a.exec_()
     
        sys.exit(app.exec_())
    Le problème venait du main dans mon cas.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/05/2016, 18h04
  2. Réponses: 1
    Dernier message: 15/05/2014, 14h23
  3. Réponses: 2
    Dernier message: 06/07/2012, 19h38
  4. AttributeError "nonetype" object has no attribute
    Par Invité dans le forum Général Python
    Réponses: 2
    Dernier message: 14/12/2010, 20h49
  5. Réponses: 2
    Dernier message: 26/05/2006, 14h48

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