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 :

AttributeError: 'QAction' object has no attribute 'clicked'


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Par défaut AttributeError: 'QAction' object has no attribute 'clicked'
    Bonjour, j'utilise Python et Qt etj'ai cette erreur qui s'affiche pour cette ligne:
    self.fen.actionAjouter.clicked.connect(self.cont_ajouter)


    (fen est ma fenetre principale, actionAjouter est mon bouton sur cette fenetre, clicked est le signal et cont_ajouter est mon slot que j'ai crée juste en dessous.

    Merci d'avance.

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Par défaut
    up!

  3. #3
    Expert confirmé

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

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

    Remplace clicked par triggered

    Toute la vérité ici: http://pyqt.sourceforge.net/Docs/PyQt4/qaction.html

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Par défaut
    Merci pour le réponse; mais cela me crée une autre erreur:

    AttributeError: 'fenAjouter' object has no attribute 'nom'

    Voici ma classe fenAjouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class fenAjouter(QtWidgets.QMainWindow,Ui_DialogAjouter):
    	def __init__(self):
    		QtWidgets.QMainWindow.__init__(self,None)
     
    		self.setupUi(self)
     
     
     
    	def ouvrirAjouter (self):
    		self.show()
    Dans mon model:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def ajouter(self, f):
    		self.l.append(f)
    		print("on a ajouter la personne suivante : {0} {1} {2} {3} " .format(f.nom,f.prenom,f.numero,f.dpt))
    et mon controler:
    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
     
     
     
    class controler:
    	def __init__(self,rep,fen,f2,f3,f4):
    		self.rep=rep
    		self.fen=fen
    		self.f2=f2
    		self.f3=f3
    		self.f4=f4
     
     
     
    		fen.actionAjouter.triggered.connect(self.cont_ajouter(f2))
    		self.fen.actionRechercher.triggered.connect(self.cont_rechercher())
    		self.fen.actionSupprimer.triggered.connect(self.cont_supprimer())
     
    	def cont_ajouter(self,f2):
    		self.rep.ajouter(f2)
     
    	def cont_rechercher(self):
    		self.rechercher
     
     
     
    	def cont_supprimer(self):
    		self.supprimer
    Manque-t-il des choses ?

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Tu ne dois pas mettre de parenthèses au slots dans tes connexions de signaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     		fen.actionAjouter.triggered.connect(self.cont_ajouter)
    		self.fen.actionRechercher.triggered.connect(self.cont_rechercher)
    		self.fen.actionSupprimer.triggered.connect(self.cont_supprimer)
    Lorsque tu fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            fen.actionAjouter.triggered.connect(self.cont_ajouter(f2))
    cela veut dire que tu connectes le signal au retour de la fonction cont_ajouter().

    Puisque l'argument transmit est connu et ne change pas tu peux directement le mettre dans le slot.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	def cont_ajouter(self):
    		self.rep.ajouter(self.f2)
    Est-ce cette fonction qui appelle la méthode ajouter(self, f) de ton modèle ?
    Auquel cas rajoute un print pour voir ce qu'il en est.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	def cont_ajouter(self):
                print("%s, %s" %(self.f2, self.f2.nom))
           	    self.rep.ajouter(self.f2)
    Pas normal non plus que tu aies un double héritage ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class fenAjouter(QtWidgets.QMainWindow,Ui_DialogAjouter):
    et pourquoi QMainWindow pour ce qui semble être une boîte de dialogue ?

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Par défaut
    Bonsoir Vinss, j'ai modifier ce que tu m'as dit. La fonction cont_ajouter est bien celle qui appelle la fonction ajouter du modèle. Pour la fenêtre de dialogue qui hérite de QMainWindow, je pensais que toutes les fenêtre quelque soit leur type héritaient de QMainWindow. Malgrè cela, j'ai toujours la même erreur à savoir:

    self.buttonBox.accepted.connect(DialogAjouter.accept)
    AttributeError: 'fenAjouter' object has no attribute 'accept'



    Cette ligne self.buttonBox.accepted.connect(DialogAjouter.accept) a été régénéré automatiquement avec pyqt5 et voici ma class fenAjouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class fenAjouter(QtWidgets.QMainWindow,Ui_DialogAjouter):
    	def __init__(self):
    		QtWidgets.QMainWindow.__init__(self,None)
    		QtWidgets.QDialog.__init__(self, None)
    		self.setupUi(self)
     
     
     
    	def ouvrirAjouter (self):
    		self.show()
    Pour l'appel aux deux constructeurs, on m'a conseillé de faire cela.

    Pourquoi ma classe fenAjouter n'a pas de methode accept alors qu'elle hérite de QMainWindow et de QDialog?

    Merci d'avance.

Discussions similaires

  1. AttributeError "nonetype" object has no attribute
    Par Invité dans le forum Général Python
    Réponses: 2
    Dernier message: 14/12/2010, 20h49
  2. Selenium - AttributeError: 'module' object has no attribute
    Par bender1979 dans le forum Général Python
    Réponses: 4
    Dernier message: 09/11/2010, 22h03
  3. Probleme : AttributeError: 'tuple' object has no attribute
    Par MrGecko dans le forum Général Python
    Réponses: 1
    Dernier message: 27/05/2007, 09h59
  4. 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