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 :

Afficher plusieurs fois la même image avec PySide [QtGui]


Sujet :

PyQt Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Afficher plusieurs fois la même image avec PySide
    Bonjour, j'essaye de coder un programme du style Jeu De La Vie avec une interface en PySide (pour info c'est la première fois que j'utilise PySide donc ma question est sûrement un peu bête, mais je n'ai pas trouvé la réponse dans la doc ni dans les tutos que j'ai fait).

    Donc voilà, j'ai un tableau du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [[['T', 'H'], [0, 0], [0, 0], ['B', 0], [0, 0], [0, 0], ['B', 0], ['T', 'D'], ['B', 0], [0, 0]],
    [['B', 0], [0, 0], ['T', 'H'], ['T', 'G'], ['T', 'H'], [0, 0], [0, 0], [0, 0], [0, 0], ['T', 'H']], 
    [[0, 0], ['B', 0], ['T', 'G'], ['T', 'G'], ['T', 'B'], ['T', 'B'], ['T', 'G'], ['T', 'G'], ['T', 'H'], ['B', 0]], 
    [['B', 0], [0, 0], [0, 0], ['T', 'D'], ['T', 'B'], [0, 0], [0, 0], ['B', 0], [0, 0], [0, 0]], 
    [[0, 0], [0, 0], [0, 0], [0, 0], ['T', 'B'], [0, 0], ['B', 0], [0, 0], ['B', 0], [0, 0]], 
    [[0, 0], [0, 0], ['T', 'H'], [0, 0], [0, 0], [0, 0], ['B', 0], ['T', 'B'], ['B', 0], ['T', 'D']]]
    Je voudrais que mon programme parcours ce tableau et affiche un image de termite quand il y a un 'T' et une image de brindille pour 'B' et cela avec des positions relatives à celles du tableau.

    Pour le moment j'ai eu au mieux un termite et une brindille au même endroit. Par la suite j'ai créé un QGraphicsItemGroup() pour stocker toutes les images et les afficher d'un coup mais je n'ai plus qu'une scene vierge...

    Merci d'avance pour votre aide.

    Gorglum

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

    Toi y'en a montrer code, nous y'en a proposer méthode.

    Ce serait plus simple, non ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Le code est un peu long, je voulais vous épargner la relecture

    M'enfin bon, voilà ce que j'ai fais (du coup je suis preneur pour tous conseil pour simplifier l'écriture)

    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
    75
    76
    77
    78
    79
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import sys
    import random
    from PySide.QtCore import *
    from PySide.QtGui import *
     
    class Pixmap(QGraphicsObject):
        def __init__(self, pix):
            super(Pixmap, self).__init__()
     
            self.p = QPixmap(pix)
     
        def paint(self, painter, option, widget):
            painter.drawPixmap(QPointF(), self.p)
     
        def boundingRect(self):
            return QRectF(QPointF(0, 0), QSizeF(self.p.size()))
     
    def creation(N):
        global tableau
        for i in range(N):
            tableau.append([[0,0]]*N)
     
    def remplissage(B,T):
        global tableau
        proportionB = float(B)/(N*N)
        proportionT = float(T)/(N*N)
        print proportionB
        print proportionT
        if proportionB+proportionT > 1:
            return "Trop de termites ou de brindilles"
        for i in range(N):
            for j in range(N):
                nbRand = random.random()
                if nbRand < proportionB:
                    tableau[i][j] = ["B",0]
                elif nbRand < proportionB + proportionT:
                    tableau[i][j] = ["T",random.choice(orientation)]
        print tableau
     
    def affichage():
        brindille = Pixmap(QPixmap('./branche.gif'))
        termite = Pixmap(QPixmap('./termite.gif'))
        Group = QGraphicsItemGroup()
        scene = QGraphicsScene(0, 0, 500, 500)
        for i in range(N):
            for j in range(N):
                if tableau[i][j][0] == "B":
                    brindille.setPos(i*40,j*40)
                    Group.addToGroup(brindille)
                elif tableau[i][j][0] == "T":
                    termite.setPos(i*40,j*40)
                    Group.addToGroup(termite)
        scene.addItem(Group)
        return scene
     
    def main():
        creation(10)
        remplissage(25,25)
        # Create the Qt Application
        app = QApplication(sys.argv)
     
        scene = affichage()
        view = QGraphicsView(scene)
        view.show()
     
        options = Options()
        options.show()
     
        # Run the main Qt loop
        sys.exit(app.exec_())
     
    if __name__ == '__main__':
        N = 10
        tableau = []
        orientation = ["H","B","D","G"]
        main()
    Normalement tout fonctionne bien sauf la fonction affichage.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Comme je le pensais la solution était très simple, il m'a suffit de réfléchir un peu plus fort ^^

    Pas besoin de se compliquer la vie avec un QGraphicsItemGroup. Il m'a suffit de faire les changement suivant dans ma fonction affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def affichage():
        scene = QGraphicsScene(0, 0, 500, 500)
        for i in range(N):
            for j in range(N):
                if tableau[i][j][0] == "B":
                    brindille = Pixmap(QPixmap('./branche.gif'))
                    brindille.setPos(i*40,j*40)
                    scene.addItem(brindille)
                elif tableau[i][j][0] == "T":
                    termite = Pixmap(QPixmap('./termite.gif'))
                    termite.setPos(i*40,j*40)
                    scene.addItem(termite)
        return scene
    Et maintenant c'est très joli!

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

Discussions similaires

  1. [AC-2007] Problème de clarté / afficher plusieurs fois la même table
    Par Vhalar dans le forum Modélisation
    Réponses: 6
    Dernier message: 28/08/2011, 19h52
  2. [glade] Afficher plusieur fois la même fenetre
    Par zenetcalme dans le forum GTK+
    Réponses: 4
    Dernier message: 21/11/2008, 17h30
  3. Pouvoir afficher plusieurs fois le même carctère
    Par kerido dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 25/10/2007, 15h44
  4. TListView affiche plusieurs fois la même bitmap
    Par OutOfRange dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2007, 23h04
  5. Réponses: 12
    Dernier message: 23/01/2007, 19h07

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