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 :

Explication de la syntaxe de connexion pour le bouton Quitter


Sujet :

PyQt Python

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Explication de la syntaxe de connexion pour le bouton Quitter
    Bonjour,

    J'ai écrit la fenêtre du menu principal de mon programme en pyside

    voici le 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
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    #!/usr/bin/env python
    # -*- coding: latin-1 -*-
    # Auteur Battant
     
    # ce code pourrait faire partie d'un logiciel libre payant open source chaque personne pourrait ou non ce faire pyer pour le travail sur son code.
    # Ce code serait distribuer en open source dans l'espoir qu'il serait amélioré et maintenu par une communauté motivée et afin que le programme
    # qui en résulte ne meure si possible jamais.
     
    from PySide import QtGui
    from PySide import QtCore
    import logging, logging.handlers
    from PySide.QtGui import *
    import sys
     
     
    class MainMenu (QtGui.QWidget) :
     
     
        verbose = False
     
        def __init__(self, parent=None) :
            QtGui.QWidget.__init__(self, parent)
            self.clients = QPushButton('Clients',self)
            self.prestations = QPushButton ('Prestations',self)
            self.factures = QPushButton ('Facture',self)
            self.agenda = QPushButton ('agenda',self)
            self.Quitter = QPushButton('Quitter',self)
            #self.configEvent()
            self.setWindowTitle('Menu principal')
            self.menuLayout = QHBoxLayout()
            self.menuLayout.addWidget(clients)
            self.menuLayout.addWidget(prestations)
            self.menuLayout.addWidget(factures)
            self.menuLayout.addWidget(agenda)
            self.menuLayout.addWidget(agenda)
            self.setLayout(menuLayout)    
            #quitLayout = QHBoxLayout()
            #quitLayout.addWidget(Quitter)
     
            menuLayout.addWidget(Quitter)
     
        def configEvent(self) :
     
            #Extrait de: Harsh. ��PyQt : signaux, slots et dispositions.�� iBooks.
            self.connect(self.Quitter, QtCore.SIGNAL("clicked()"), QtCore.SLOT("quit()")
     
        def main(cls) :
            app = QtGui.QApplication(sys.argv)
            if '-v' in sys.argv :
                verbose = True
            MainMenu.prepareLogFile()
            if verbose :
                logging.debug ('session principale')
                logging.debug ('construction mainmenu')
                window = MainMenu()
            window.show()
            if verbose :
                logging.debug ('mainmenu construit')
     
            sys.exit(app.exec_())
     
        def prepareLogFile(cls) :
            lvl = logging.DEBUG
            logfile = "billManagerOutput.log"
            logging.basicConfig(filename=logfile, filemode='a', format=form ,level=lvl)
            file_handler = logging.handlers.RotatingFileHandler(logfile, backupCount=7,
                                                            encoding='utf-8')
            file_handler.setFormatter(logging.Formatter(form))
            logger.addHandler(file_handler)
     
     
    if __name__=='__main_ ':
        MainMenu.main()
    La ligne suivante me pose un problème et je n'arrive pas à en déterminer la cause.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            self.connect(self.Quitter, QtCore.SIGNAL("clicked()"), QtCore.SLOT("quit()")
    Pouvez-vous me dire ce qui ce passe avec cette ligne ?

    Merci d'avance

    Salutations
    Battant

  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,

    Tu es sûr que tu n'as que ce problème là ?

    Ton code, tel que tu nous le donnes, se résume à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> class Main:
    ...     def __init__(self):
    ...             print("Initialisation de l'instance de Main")
    ...             
    ...     def foo(cls):
    ...             print('foo arg: %s' % cls)
    ... 
    >>> Main.foo()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: foo() takes exactly 1 argument (0 given)
    >>>
    Autre chose qui laisse penser que ton code ne tourne pas du tout c'est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            self.menuLayout.addWidget(clients)
            self.menuLayout.addWidget(prestations)
            self.menuLayout.addWidget(factures)
            self.menuLayout.addWidget(agenda)
            self.menuLayout.addWidget(agenda)
    clients, prestations, factures, agenda sont inconnus dans ce code.

    Je te recommande d'utiliser le designer Qt pour les interfaces, tu éviteras ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            self.menuLayout.addWidget(agenda)
            self.menuLayout.addWidget(agenda)
            self.setLayout(menuLayout)    
            #quitLayout = QHBoxLayout()
            #quitLayout.addWidget(Quitter)
    Si le bouton Quitter n'est pas dans son layout, il superposera le widget situé en haut à gauche, mais à mon avis ton intention était de le mettre à la place du deuxième agenda.

    Le designer permet une prévisualisation, qui te fera gagner beaucoup de temps.

    Pour la connexion du signal, il faut absolument abandonner le "old style" et préferrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.Quitter.clicked.connect(quit)
    Et puis pour le reste on verra ...

Discussions similaires

  1. [CR.NET] Problème de connexion pour un sous-état
    Par HULK dans le forum Connectivité
    Réponses: 16
    Dernier message: 02/06/2009, 10h37
  2. [C#] port de connexion pour mysql
    Par pcdj dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/01/2006, 08h11
  3. Explications sur la syntaxe iptables
    Par Nightfall dans le forum Sécurité
    Réponses: 4
    Dernier message: 11/05/2005, 01h33
  4. syntax sql spéciale pour postgresql ???
    Par krimson dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/05/2004, 15h23
  5. Réponses: 2
    Dernier message: 31/08/2002, 21h37

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