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 :

Comment dessiner dans une MainWindow ?


Sujet :

PyQt Python

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Systèmes embarqués
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut Comment dessiner dans une MainWindow ?
    Bonjour à tous,

    Novice en Python et surtout dans l'utilisation de la bibliothèque PyQt, je ne parviens pas à régler mon problème qui est pourtant très simple. Malheureusement je n'ai trouvé de solution nulle part...

    J'ai créé une fenêtre (classe MainWindow), celle-ci contient un menubar (file , open...), je récupère donc bien mes données, et je voudrais appeler ma classe Carré qui en fonction de mes données dessine des carrées à des positions (X,Y).

    Porblème : je sais dessiner des carrées depuis la classe MainWindow en ajoutant cette méthode dans cette classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def paintEvent(self, event):
     
        paint = QPainter()
        paint.begin(self)
        paint.drawRect(100,100,100,100)
        painter.end()
    Mais je voudrais dessiner des carrés dans cette fenêtre (de la classe MainWindow) depuis la classe Carre...

    Est-ce possible?

    Je résume:
    - départ du code
    - appelle de main
    - création d'une fenêtre et de file open (Classe MainWindow)
    - récupération des données dans une méthode de MainWindow
    - appelle de ma classe Carre et dessiner des carrées depuis cette classe dans la fenêtre de MainWindow

    Merci a tous, et soyez indulgent je suis électronicien de formation :p

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 31
    Par défaut
    Bonjour ,

    ma première remarque , au cas où :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paint.drawRect(100,100,100,100)
    cela vous dessinera un carré 100x100 avec l'origine du sommet haut-gauche le point (100,100) , dans le système de coordonnées de votre classe (principal ) héritant de QMainWindow. ( en gros tu dessineras toujours le même carré au même endroit )

    Pour ce qui est de ta question , si j'ai bien compris :

    il suffit de coder la classe Carré à part (en dessous de la classe principale par exemple ou dans un autre script python que tu importeras dans ton script principal ) et de mettre dedans la méthode de dessin.

    et faire appel à cette dernière dans ta classe principale , par exemple via un click sur un bouton ou n'importe quel SIGNAL que tu souhaites qu'il engendre le dessin

  3. #3
    Membre éclairé
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Amateur
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 52
    Par défaut
    Je ne suis pas sûr de comprendre ce que fait la classe Carre. Est-ce que je comprends bien que une fois que des données sont chargées, la classe Carre est créée et on lui passe ces données ? Elle calcul où devront être dessiné les carrés.

    Alors pourquoi ne pas faire un Widget de la classe Carre. Quand on charge les données, on instancie ce Widget qu'on ajoute au MainWindow. Ce Widget interprète comme il se doit les données, et c'est dans sa propre méthode paintEvent() qu'il peut dessiner les rectangles.

  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
    Salut,

    Quand tu démarres ton painter tu dois lui indiquer le support sur lequel peindre.

    Donc certainement pas self qui, si l'on suit bien tes explications, serait l'instance de ta classe Carre.

    J'ignore où tu veux dessiner mais supposons que tu as une QGraphicsScene (je simplifie) alors tu dois faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    paint = QPainter()
    paint.begin(self.main.scene)
    paint.drawRect(left, top, width, height)
    painter.end()

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Systèmes embarqués
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Quand tu démarres ton painter tu dois lui indiquer le support sur lequel peindre.

    Donc certainement pas self qui, si l'on suit bien tes explications, serait l'instance de ta classe Carre.

    J'ignore où tu veux dessiner mais supposons que tu as une QGraphicsScene (je simplifie) alors tu dois faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    paint = QPainter()
    paint.begin(self.main.scene)
    paint.drawRect(left, top, width, height)
    painter.end()
    Merci pour vos réponses et merci a toi VinsS je teste de suite et je reviens vers toi pour te dire .

Discussions similaires

  1. [Débutant]Interface graphique avec eclipse
    Par steelidol dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 08/06/2006, 13h12
  2. [Plugin][VE]Interface graphique avec VE
    Par GENERYS dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/06/2005, 11h40
  3. Interface graphique avec plusieurs fenêtres
    Par Copps dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/03/2005, 18h00

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