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 :

Fenêtre désespérément vide


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 Fenêtre désespérément vide
    Bonjour,

    Je viens du monde java et je test pySide et j'ai écrit un petit script qui est censé afficher une fenêtre (le menu principal du programme). Hélas, le programme affiche bien une fenêtre mais elle est désespérément vide. En plus, le constructeur de la classe semble ne jamais être appelé.

    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
     
    #!/usr/bin/env python
     
    from PySide import QtGui
    from PySide import QtCore
     
    class MainMenu (QtGui.QWidget) :
     
        def __int__(self, parent=None) :
            super(self, parent)
           # QtGui.QWidget.__init__(self, parent)
            print('salut')
            self.setWindowTitle("Menu principal")
            clients = QPushButton("Client")
            prestations = QPushButton ("Prestations")
            factures = QPushButton ("Facture")
            agenda = QPushButton ("agenda")
            Quitter = QPushButton("Quitter")
            mwnuLayout = QHBoxLayout()
            menuLayout.add(clients)
            menuLayout.add(Prestations)
            menuLayout.add(factures)
            menuLayout.add(agenda)
            self.add(menuLayout)
            quitLayout = QHBoxLayout()
            quitLayout.add(Quitter)
            self.add(quitLayout)
            self.pack()
     
    if __name__ == '__main__' :
        import sys
     
        print ('session principale')
        app = QtGui.QApplication(sys.argv)
        print ('construction mainmenu')
        window = MainMenu()
        window.show()
        print ('mainmenu construit')
        sys.exit(app.exec_())
    Pourriez-vous m'aider ?

    Merci d'avance
    Battant

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

    J'ai pas tout vu mais il faut déjà corriger ça: c'est __init__ et pas __int__.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut


    Vu comme tu fais tes import de QtCore et QtGui, il faut appeler des Widgets en indiquant le module dont ils dépendent :
    .

    ++


    J

    [EDIT]
    J'étais sur mon tél lorsque j'ai donné ma première réponse.
    Après une meilleure lecture, je note pas mal d'erreur dans ton code (faute de frappe ou réelle erreur ???)

    Quelques exemples :
    • tu crées des objets en donnant des noms sans majuscule, mais lorsque tu veux les placer dans ton layout, tu en écris un avec une majuscule ;
    • pour placer des objets dans un layout il faut utiliser addWidget() et non pas add() ;
    • pour ajouter un layout à une fenêtre il faut utiliser setLayout() et non pas add().


    Un petit exemple qui devrait t'aider : http://srinikom.github.io/pyside-doc...BoxLayout.html

    Pour finir, personnellement je nommerai mes objets plutôt sous la forme self.NomObjet, surtout si tu les définis dans __init__ : il y a de fortes chances pour que tu es besoins de les appeler plus tard.

    Bonne continuation.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    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,

    Les corrections sont en caractères gras.
    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
    #!/usr/bin/env python
     
    from PySide import QtGui
    from PySide import QtCore
     
    class MainMenu (QtGui.QWidget) :
        def __init__(self, parent=None) :
            super(MainMenu, self).__init__(parent)
            self.setWindowTitle("Menu principal")
            clients = QtGui.QPushButton("Client", self)
            prestations = QtGui.QPushButton ("Prestations", self)
            factures = QtGui.QPushButton ("Facture", self)
            agenda = QtGui.QPushButton ("agenda", self)
            Quitter = QtGui.QPushButton("Quitter", self)
            menuLayout = QtGui.QHBoxLayout()
            menuLayout.addWidget(clients)
            menuLayout.addWidget(prestations)
            menuLayout.addWidget(factures)
            menuLayout.addWidget(agenda)
            # Pourquoi un layout à part pour un seul bouton ?
            quitLayout = QtGui.QHBoxLayout()
            quitLayout.addWidget(Quitter)
            menuLayout.addLayout(quitLayout)
            self.setLayout(menuLayout)
            #self.pack()  ?!?
     
    if __name__ == '__main__' :
        import sys
        app = QtGui.QApplication(sys.argv)
        window = MainMenu()
        window.show()
        sys.exit(app.exec_())
    Même remarque que Jiyuu, si tu ne gardes pas référence de tes widgets, tu ne pourras plus y accéder par leur nom.

Discussions similaires

  1. Déclarer qu'un champ de ma fenêtre est vide
    Par PyMon dans le forum WinDev
    Réponses: 6
    Dernier message: 05/06/2008, 14h36
  2. [Sécurité] $_SESSION désespérément vide
    Par Dufok dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2008, 13h58
  3. VS 2005 Fenêtre propriétés vide en mode source
    Par yann47 dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/12/2007, 11h29
  4. Problème de fenêtres services vides
    Par Xhayn dans le forum Windows
    Réponses: 4
    Dernier message: 02/08/2007, 16h28
  5. Problème d'affichage: fenêtres (frames) vides!
    Par NdmaX dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 12/07/2005, 21h23

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