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

GUI Python Discussion :

Fonction de boucle pour un affichage en GUI


Sujet :

GUI Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Fonction de boucle pour un affichage en GUI
    Bonjour à tous,
    J'ai une amie qui a un programme à faire en python pour une option au bac. Cependant ne pratiquant pas ce langage je ne peux pas vraiment l'aider concernant la syntaxe de son code.

    Le projet a pour but de déterminer l'emplacement des planètes du système solaire en fonction de nombre de jour passés.
    Le programme fonctionne correctement en ce qui concerne l'affichage des planètes.

    Exemple :
    Elle a une image de fond avec les 8 planètes affichées à 0 jours.
    Si elle entre 10 jours, les planètes vont se déplacer directement au dixième jours.
    Or il faudrait que les planètes se déplacent jour par jour jusqu'au dixième jour.

    Mon idée était de faire une boucle.
    Exemple :
    i=0
    jour1=jour1.get (entrée du nombre de jour)
    while (i<jour1)
    i=i+1 (tant que i n'atteint pas le nombre de jour entrée on incrémente de 1)
    print (le print est juste la pour dire que j'affiche sur le graphique l'emplacement des 8 planètes)

    Je vous mets en pièce jointe un bloc note qu'elle m'a donné pour que vous ayez un aperçu du code.

    En espérant avoir été complet, une bonne journée à vous.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Euh, si il s'agit simplement de la syntaxe, ça ressemblera à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i = 0
    jour1 = input('Veuillez saisir le nombre de jour')
    while (i<jour1):
        i=i+1 
        print #On affiche les planètes au jour i
    Si j'ai mal compris, j'essaierai de t'aider encore.

    EDIT : Si tu veux que le programme attende par exemple, 5 secondes, entre chaque jour de déplacement, tu ajouteras ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     import time # Dans les déclarations
     
    time.sleep(5) # Dans ta boucle while

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci pour avoir valider la syntaxe de la boucle.
    Cependant quand nous avions fais ceci il affiché seulement l'incrémentation de 1 jour dans la boite de dialogue.

    En fait :

    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
    def saisie():     # ici c'est le bloc qui contient les planètes ainsi que la saisie du jour
        jour1=jour.get()
        i=int(jour1)
        Trajectoire_de_Mercure()
        Soleil()
        Trajectoire_de_Venus()
        Trajectoire_de_Terre()
        Trajectoire_de_Mars()
        terre(i)
        mercure(i)
        venus(i)
        mars(i)
        date(i)
     
    def mercure(jour1):       # ici le bloc du calcul des coordonnées de mercure
        anglemercure=2*pi*((jour1)/87.66)+1.8
        dxmercure=58*(cos(anglemercure))
        dymercure=58*(sin(anglemercure))
        Mercure(dxmercure,dymercure,anglemercure)
    Ce que je souhaite c'est que la variable jour1 ne soit pas le jour de saisie mais bien la boucle.
    En fait je souhaite que le calcul soit fait jour par jour jusqu'au jour saisie et qu'il affiche ainsi le déplacement des planètes pour chaque calcul.
    Donc si on rentre 15 jours, il fera 15 calculs et 15 affichages.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Florentin59 Voir le message
    Tout d'abord merci pour avoir valider la syntaxe de la boucle.
    Cependant quand nous avions fais ceci il affiché seulement l'incrémentation de 1 jour dans la boite de dialogue.

    En fait :

    def saisie(): (ici c'est le bloc qui contient les planètes ainsi que la saisie du jour )
    jour1=jour.get()
    i=int(jour1)
    Trajectoire_de_Mercure()
    Soleil()
    Trajectoire_de_Venus()
    Trajectoire_de_Terre()
    Trajectoire_de_Mars()
    terre(i)
    mercure(i)
    venus(i)
    mars(i)
    date(i)

    def mercure(jour1): (ici le bloc du calcul des coordonnées de mercure)
    anglemercure=2*pi*((jour1)/87.66)+1.8
    dxmercure=58*(cos(anglemercure))
    dymercure=58*(sin(anglemercure))
    Mercure(dxmercure,dymercure,anglemercure)

    Ce que je souhaite c'est que la variable jour1 ne soit pas le jour de saisie mais bien la boucle.
    En fait je souhaite que le calcul soit fait jour par jour jusqu'au jour saisie et qu'il affiche ainsi le déplacement des planètes pour chaque calcul.
    Donc si on rentre 15 jours, il fera 15 calculs et 15 affichages.
    bouton "#" en haut à droite de votre éditeur de messages de forum.


  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Petit edit en fait.
    J'ai un ami qui m'a conseillé de faire une boucle for avec une liste de mes planètes.
    Finalement je dois faire une liste de mes planètes : L:[mercure,venus,terre,mars,jupiter,saturne,uranus,neptune]

    Une boucle for :
    for i in range (0,j) :

    Mais je ne sais pas ou placer ces deux éléments donc 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
    def saisie():
        jour1=jour.get()
        i=int(jour1)
        Trajectoire_de_Mercure()
        Soleil()
        Trajectoire_de_Venus()
        Trajectoire_de_Terre()
        Trajectoire_de_Mars()
        terre(i)
        mercure(i)
        venus(i)
        mars(i)
        date(i)
     
     
     
    def mercure(jour1):
        anglemercure=2*pi*((jour1)/87.66)+1.8
        dxmercure=58*(cos(anglemercure))
        dymercure=58*(sin(anglemercure))
        Mercure(dxmercure,dymercure,anglemercure)
     
    def venus(jour1):
        anglevenus=2*pi*((jour1)/226.455)+2.2
        dxvenus=108*(cos(anglevenus))
        dyvenus=108*(sin(anglevenus))
        Venus(dxvenus,dyvenus,anglevenus)
     
    def terre(jour1):
        angleterre=2*pi*((jour1)/365.25)-0.4
        dxterre=150*(cos(angleterre))
        dyterre=150*(sin(angleterre))
        Terre(dxterre,dyterre,angleterre)
     
    def mars(jour1):
        anglemars=2*pi*((jour1)/687.67)+0.09
        dxmars=228*(cos(anglemars))
        dymars=228*(sin(anglemars))
        Mars(dxmars,dymars,anglemars)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Pour parcourir ta liste de planètes tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    planetes = [Mercure, Venus, Terre, Mars, Jupiter, Saturne, Uranus, Neptune]
    for planete in planetes:
        #Fait quelque chose
    Après je te conseille vraiment de faire une classe de type Planete, afin que tes entités Mercure, Venus, Terre, Mars etc. soient des Planete, cette classe aurait comme paramètres dx, dy, angle, et r (qui doit être le rayon).
    Et ensuite tu ferais une méthode Trajectoire(Planete).
    Ce serait déjà plus simple à comprendre.

Discussions similaires

  1. [Débutant] Boucle dans une boucle pour l'affichage de listes
    Par Alain31 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 17/10/2013, 19h06
  2. [XL-2003] Boucle pour (moteur de) recherche dans plusieurs colonnes et affichage réponse
    Par Cenotik dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/04/2011, 00h47
  3. [AJAX] boucle for dans item pour l'affichage d'une base de donné
    Par senda dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/03/2009, 13h42
  4. Réponses: 3
    Dernier message: 11/01/2006, 17h44

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