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 :

[PyQt4] Qwidget contenu dans un QFrame particulier d'une QMainWindow - RPi3 [QtGui]


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
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Par défaut [PyQt4] Qwidget contenu dans un QFrame particulier d'une QMainWindow - RPi3
    Bonjour à toutes et à tous,

    Je suis actuellement en train de développer une petite application tactile en utilisant un Raspberry Pi 3 et l'écran officiel 7 pouces du RPi. (Raspbian Jessie)
    Pour se faire, j'utilise PyQt4 car cela fait plusieurs années que je l'utilise, et je n'ai pas encore eu le temps de migrer l'ensemble en PyQt5 sous RPi.

    J'utilise un QMainWindow sans barre de menu, barre d'état et compagnie sans bordure ... application tactile oblige. De cette fenêtre principale, j'ai 2 frame :
    - la première pour le bandeau en haut de l'écran (frmHeader)
    - la seconde pour le contenu principal (frmDockWindow)

    Dans cette application, il y aura plusieurs informations à saisir, et pour se faire, vu que je n'ai qu'un écran 7 pouces, (je ne peux donc pas mettre tous les champs de saisie sur un seul écran), cela ne serait pas pratique pour l'utilisateur.
    Du coup, j'ai pensé à un système de "wizard" avec 3 QWidgets qui se succéderait dans la "frmDockWindow"... pour l'instant j'arrive bien à faire apparaître le premier QWidget dans cette frame (je l'ai déjà fait par le passé); mais là, pas moyen de faire apparaître les 2 autres QWidgets dans cette même frame, la première reste toujours affichée, même si j'appel "setVisible(False)" ou "hide()" ...

    Est-ce que quelqu'un d'entre vous à déjà réaliser ce genre de besoin ?
    Merci beaucoup pour votre aide,

  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,

    Si je comprend bien, chacune des trois pages a un bouton "Suivant" pour passer à la page suivante.

    Dans ce cas je te conseille le QStackedWidget

    Ça s'organise comme ça:

    st = QStackedWidget()
    st.addWidget(page1)
    st.addWidget(page2)
    etc ...


    et pour changer de page tu fais st.setCurrentIndex(0)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Par défaut
    Bonjour,

    Merci beaucoup pour la réponse. Oui c'est bien ça, un wizard en fait <next-next-next-finished". Je m'empresse donc de faire un petit test pour apprendre à utiliser ce widget, que je ne connaissais pas du tout ....
    A suivre ...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Par défaut
    Re Bonjour,

    Bon je viens de tester, avec quelques petits exemples, et cela fonctionne correctement. Du coup, je passe à mes 3 classes, (héritant de QWidget), qui vont "composer" le QStackedWidget ... au niveau IHM, ces 3 widgets sont gérés via Qt Designer, donc j'ai 3 fichiers ".ui". J'ai mis un layout principal dans ma classe principale qui sera en charge d'appeler les 3 widgets grâce à des boutons "next" ou "back" ... le premier widget s'affiche, mais je n'ai pas l'ensemble de mon IHM ... comme si le layout avait une bordure .... attention mon écran tactile RPi officiel permet du design d'écran en 800x480 pixels.

    Merci,

  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
    Je ne vois pas ce que tu veux dire par "je n'ai pas l'ensemble de mon IHM"

    Pour faire au plus simple tu aurais quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class MainUI(QMainWindow):
        def __init__(self):
            super().__init__()
            self.layout = QVboxLayout(self)
            # les quatre marges gauche, haut, droite, bas
            self.layout.setContentsMargins(0, 0, 0, 0)
            # l'espace entre les widgets
            self.layout.setSpacing(0)
            self.header = monHeader(self)
            self.layout.addWidget(self.header)
            self.wizard = QStackedWidget(self)
            self.layout.addWidget(self.wizard)
            # ensuite, tu remplis le stacked widget
    Là j'ai mis tous les espaces à zéro pour commencer, après tu vois et tu changes les valeurs.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Par défaut
    Bonjour,

    Ok merci beaucoup pour votre réponse. J'ai testé et cela fonctionne correctement.
    Encore merci !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/11/2017, 16h09
  2. Réponses: 3
    Dernier message: 23/03/2010, 17h55
  3. Réponses: 6
    Dernier message: 31/05/2008, 18h05
  4. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

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