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 :

Problème d'affichage de GUI


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 120
    Par défaut Problème d'affichage de GUI
    Bonjour

    Merci pour ce tutos
    Je suis nouveau sur PyQt et j'ai suivi ce tutoriel (avec les écueils exposés par cenwen )
    J'ai essayé de faire ma simple application mais je butte sur la classe à étendre
    Dans le tutoriel on utilise QGroupBox mais non exemple utilise une simple form et je n'arrive pas à trouver l’équivalent (j'ai essayé QForm et QFormLayout sans succès)

    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
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from hello import Ui_Form
    import sys
     
    class HelloWorldApplication(QForm):
     
        def __init__(self, parent=None):
            super(HelloWorldApplication, self).__init__(parent)
            self.createWidgets()
     
        def createWidgets(self):    
            self.ui = Ui_Form() 
            self.ui.setupUi(self)
     
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        myapp = HelloWorldApplication()
        myapp.show()
        sys.exit(app.exec_())
    Voici le code hello.py converti de hello.ui par pyuic4
    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
    from PyQt4 import QtCore, QtGui
     
    try:
        _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
     
    try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig)
     
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName(_fromUtf8("Form"))
            Form.resize(240, 126)
            self.pushButton = QtGui.QPushButton(Form)
            self.pushButton.setGeometry(QtCore.QRect(80, 70, 75, 23))
            self.pushButton.setObjectName(_fromUtf8("pushButton"))
            self.label = QtGui.QLabel(Form)
            self.label.setGeometry(QtCore.QRect(90, 30, 54, 14))
            self.label.setObjectName(_fromUtf8("label"))
     
            self.retranslateUi(Form)
            QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.label.clear)
            QtCore.QMetaObject.connectSlotsByName(Form)
     
        def retranslateUi(self, Form):
            Form.setWindowTitle(_translate("Form", "Form1", None))
            self.pushButton.setText(_translate("Form", "clear", None))
            self.label.setText(_translate("Form", "Hello World", None))
    Configuration
    Python 2.7
    QT Designer 4.8.5

    Note: Les screenshot d’écran serait avantageusement remplacées par des fenêtres de code afin de permettre les copier/coller (oui, oui je suis faignant ). A réfléchir pour un tuto en PyQt5

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

    J'ignore d'où tu sors ce QForm mais je te propose de re-générer ton code avec l'argument exécutable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    pyuic4 -x hello.ui -o hello.py
    python hello.py
    Si tu as encore une erreur (ce qui m'étonnerais), copie-colle le traceback complet.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 120
    Par défaut
    Merci

    Il n'y a pas de changement j'ai toujours le meme message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PS C:\python27\pyqt> python helloworld.py
    Traceback (most recent call last):
      File "helloworld.py", line 7, in <module>
        class HelloWorldApplication(QForm):
    NameError: name 'QForm' is not defined
    Le QForm c'est moi qui l'ai mis car la fenêtre n'a pas été créé depuis le widget GroupBox mais depuis Form. J'ai fait du mimétisme, ça marche pas a tous les coups
    C'est la syntaxe des classes que je ne connais pas et dont je n'ai pas trouvé de doc.
    Je viens de trouver sur le web que la Form fait partie de la class QWidget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class HelloWorldApplication(QWidget):
    Pas évident de trouver les classes à partir du code produit pas pyui, dans le code on ne voit pas la classe des composants
    En fait c'est plus comprendre le mécanisme qui me permettrait de remonter de Form à QWidget qui m'intéresse. Le but de QT Designer c'est d'accélérer le code des fenêtres donc si on passe plus de temps sur Google pour trouver les classes autant faire le code à la mano.
    J'avais naturellement fait auparavant un Hello World sans QT Designer, le but était de tester cet outil mais je crois que je vais continuer le codage classique

  4. #4
    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
    Citation Envoyé par FlyByck Voir le message
    Merci

    Il n'y a pas de changement j'ai toujours le meme message
    Parce que tu as réintroduis ton QForm imaginaire. J'avais spécifiquement écris les deux commandes à la suite l'une de l'autre pour que tu sois tenté d'essayer le code directement sans le modifier. C'est raté.

    La doc, la seule qui dit la vérité, toute la vérité et rien que la vérité se trouve ici:
    http://pyqt.sourceforge.net/Docs/PyQt4/classes.html

  5. #5
    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 : 43
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par FlyByck Voir le message
    Le QForm c'est moi qui l'ai mis car la fenêtre n'a pas été créé depuis le widget GroupBox mais depuis Form. J'ai fait du mimétisme, ça marche pas a tous les coups
    C'est la syntaxe des classes que je ne connais pas et dont je n'ai pas trouvé de doc.
    Je viens de trouver sur le web que la Form fait partie de la class QWidget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class HelloWorldApplication(QWidget):
    Tu peux nous sortir la doc où tu as vu ça ??? car j'ai beau chercher je ne trouve rien.

    Citation Envoyé par FlyByck Voir le message
    Pas évident de trouver les classes à partir du code produit pas pyui, dans le code on ne voit pas la classe des composants
    Pas très clair mais on te crois sur parole...

    Citation Envoyé par FlyByck Voir le message
    Le but de QT Designer c'est d'accélérer le code des fenêtres donc si on passe plus de temps sur Google pour trouver les classes autant faire le code à la mano.
    Et le but d'un tutoriel c'est de le suivre... il faudrait peut-être commencé par là.

    Citation Envoyé par FlyByck Voir le message
    J'avais naturellement fait auparavant un Hello World sans QT Designer, le but était de tester cet outil mais je crois que je vais continuer le codage classique
    Je pense que ceci est une très bonne idée, surtout pour se faire la main et partir sur des bonnes bases.
    Tu aurais ainsi vu que QForm ne semble pas exister...

    Une dernière petite remarque : tu confonds pas avec QFrame par hasard ?
    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

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 120
    Par défaut
    Merci pour vos commentaires

    Tu peux nous sortir la doc où tu as vu ça ??? car j'ai beau chercher je ne trouve rien.
    Je n'ai pas trouvé cela dans une doc ( je n'avais malheureusement pas le lien précieux fourni par VinsS). J'ai trouvé dans des discussions un sujet semblable qui m'a fait essayé et qui a marché. Je serai bien incapable de retrouvé ou !

    J'avais fait le Tutoriel en le suivant et il avait fonctionné (merci)
    Mais le but du tutoriel est d'apprendre, il n'a pas d'autre utilité
    J'ai donc voulu faire "mon exemple" en m'inspirant du tutoriel pour voir si j'avais compris et non fait un bête copier/coller

    Je reviendrais sur Creator Designer, une fois plus à l'aise avec PyQt

Discussions similaires

  1. Problème aléatoire, Affichage figure dans une GUI
    Par buttigda dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 28/06/2015, 11h50
  2. Problème d'affichage d'un nombre complexe dans GUI
    Par clem3900 dans le forum MATLAB
    Réponses: 3
    Dernier message: 27/05/2013, 13h34
  3. [Qt GUI] QGridLayout problème d'affichage
    Par ridor dans le forum Qt
    Réponses: 2
    Dernier message: 17/04/2010, 21h41
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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