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

Python Discussion :

Répéter une fonction n fois [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Par défaut Répéter une fonction n fois
    Bonjours,
    Pour notre projets d'ISN nous avons décidé de faire un logiciel question/réponse. Et nous bloquons sur notre programme : nous avons une première fenêtre d'acceuille (fen1) qui s'ouvre. Lorsqu'on appuie sur un bouton une deuxième fenêtre (fen2) s'ouvre dans lequel on a nos question/réponse qui sont aléatoire. Elle se trouve dans une fonction.
    Mais nous n'arrivons pas à trouver quelque chose pour que quand on appuie sur un bouton valider (dans fen2) celle ci se détruise et que la même fenêtre réapparaisse (avec du coup, une nouvelle question). C'est pour faire plusieurs questions d'affilé.

    Nous avons déjà essayé les boucles simple comme "for i in range..." ou "while" mais ça ne supprime pas l'ancienne fenêtre.
    On a aussi essayé la fonction "repeat" sauf que ça affiche la deuxième fenêtre en premier pour finalement refaire le programme initial avec le même problème une fois les répétitions faite et donc ce n'est pas ce qu'on veux.

    Nous somme un peu désespéré de trouver une solution, merci d'avance de nous répondre.

    Voici notre programme simplifié :
    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
    from random import*
    from tkinter import*
     
     
     
    def svtch1 ():    #deuxième fenetre ouverte
     
        fen2=Tk()
     
     
        textq1=Label(fen2, text="Question", fg="grey")
        textq1.pack()
        textq1.grid(row=1,column=0,columnspan=10)
     
        Réponse1 = Checkbutton(fen2, text="Réponse 1",fg="red")  #Affiché une coche du QCM
        Réponse1.pack()
        Réponse1.grid(row=2,column=1)
        Réponse2 = Checkbutton(fen2, text="Réponse 2",fg="red") 
        Réponse2.pack()
        Réponse2.grid(row=3,column=1)
        Valider= Button(fen2,bg="white",height=1,width=18, text="Valider votre réponse",fg="orange")
        Valider.pack()
        Valider.grid(row=4,column=1,columnspan=3)
     
        fen2.mainloop()
     
     
    fen1=Tk()
    svt1=Button(fen1,width=10, height=2,text="SVT",bg='green',borderwidth=5,command=svtch1)
    svt1.grid(row=4, column=1, columnspan=2)
     
     
    fen1.mainloop()  # fin programme

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par Lulu et Mel ISN Voir le message
    Nous somme un peu désespéré de trouver une solution, merci d'avance de nous répondre.
    Ça ne sert à rien d'essayer tout et n'importe quoi en espérant que çà tombe en marche: autant jouer au loto!!! Là vous avez un problème de compréhension et qui dit compréhension dit "apprentissage".
    Une solution pourrait être:

    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
    from tkinter import *
     
    def svtch1 (Q, R1, R2):    #deuxième fenetre ouverte
     
        def do_get_response():
            print('do_get_response')
            fen2.quit()
     
        for w in list(fen1.children.values()):
            w.destroy()
     
        fen2=Frame(fen1)
     
     
        textq1=Label(fen2, text=Q, fg="grey")
        #textq1.pack()
        textq1.grid(row=1,column=0,columnspan=10)
        variable = IntVar()
        Réponse1 = Radiobutton(fen2, text=R1,
                  fg="red", variable=variable, value=1)  #Affiché une coche du QCM
        #Réponse1.pack()
        Réponse1.grid(row=2,column=1)
        Réponse2 = Radiobutton(fen2, text=R2,fg="red",
                      variable=variable, value=2) 
        #Réponse2.pack()
        Réponse2.grid(row=3,column=1)
        Valider= Button(fen2,bg="white",height=1,width=18, text="Valider votre réponse",fg="orange", command=do_get_response)
        #Valider.pack()
        Valider.grid(row=4,column=1,columnspan=3)
        fen2.pack()
        fen2.mainloop()
        fen2.destroy()
        return variable.get()
     
     
    def do_ask_question():
        for q, r1, r2 in [('Q1', 'reponse 1', 'reponse 2'),
                   ('Q2', 'reponse 1', 'reponse 2'),
                   ('Q2', 'reponse 1', 'reponse 2'),]:
            r = svtch1 (q, r1, r2)
            print (q, r)
        fen1.quit()
     
    fen1=Tk()
    svt1=Button(fen1,width=10, height=2,text="SVT",bg='green',
                borderwidth=5,command=do_ask_question)
    svt1.grid(row=4, column=1, columnspan=2)
    fen1.mainloop()  # fin programme
    Et si vous le lancez, çà le fait.
    Problème, il va falloir comprendre ce que çà fait pour vous aventurer à modifier cela pour aller un peu plus loin...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 083
    Par défaut
    Mais nous n'arrivons pas à trouver quelque chose pour que quand on appuie sur un bouton valider (dans fen2) celle ci se détruise et que la même fenêtre réapparaisse (avec du coup, une nouvelle question). C'est pour faire plusieurs questions d'affilé.
    Sauf que ce n'est pas du tout la bonne méthode, il ne faut pas détruire la fenêtre, mais la modifier ! On modifie la question, et en conséquence lié à votre code, je suppose que c'est la modification du contenu d'un widget Label.

    Nous somme un peu désespéré de trouver une solution
    Vous êtes en ISN, et vous en êtes même pas à la base de ce qu'il faudrait pour comprendre la console python. Alors imaginez comprendre une interface graphique avec sa boucle événementielle, les méthodes liées aux widgets, ... Je suis quasi sûr que la notion d'objet (et ce qui l'entoure) ne vous parle pas et pourtant c'est la base essentielle du langage. Tout cela manque un peu de cohérence, ne croyez vous pas ?

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Par défaut
    Wiztrickf,
    Merci de nous avoir répondu, nous essayons de comprendre le programme. Par contre nous avons un petit problème, quand on teste le programme, à la fin il plante au bout des 3 répétitions. Nous nous posons la question de savoir si il s'agit d'un problème de code ou bien d'un problème d'ordinateur ?
    Merci de votre futur merci,

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Par défaut
    Fred1599,
    Merci de votre réponse,
    Notre fenêtre choisi au hasard (randint) une question choisi dans une liste et ses réponses correspondantes sont également dans des listes.
    Nous avion pensé à détruire la fenêtre car cela était plus simple pour nous et que nous ne savions pas comment la modifier .
    Certes nous sommes en ISN, mais le langage est complexe et nous n'avons vu qu'une infime de son potentiel. 😉
    Et effectivement nous n'avons pas vu la notion d'objet.
    Merci de votre futur réponse,

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 083
    Par défaut
    Citation Envoyé par Lulu et Mel ISN Voir le message
    Fred1599,
    Certes nous sommes en ISN, mais le langage est complexe et nous n'avons vu qu'une infime de son potentiel. 😉
    Et effectivement nous n'avons pas vu la notion d'objet.
    Il y a deux apprentissages,
    • Le langage python
    • L'interface graphique Tk


    Le langage python doit être votre priorité pour commencer à comprendre Tk et cela ne se fait pas en si peu de temps.

    Nous avion pensé à détruire la fenêtre car cela était plus simple pour nous et que nous ne savions pas comment la modifier
    Ni plus simple, ni plus compliqué, il suffit d'y penser et d'avoir de la chance que sur votre recherche internet, vous soyez tombé sur la bonne méthode.

    Maintenant vous l'avez ! Plus qu'à chercher... via votre moteur de recherche préféré.

    Notre fenêtre choisi au hasard (randint) une question choisi dans une liste et ses réponses correspondantes sont également dans des listes.
    Juste pour information, j'avais bien compris votre problème de base.

    Et effectivement nous n'avons pas vu la notion d'objet.
    Ça commence par là, tout est objet en python.

    Un objet a ses attributs, ses méthodes et si on ne connaît pas ces notions et leurs intérêts, utilisé par vos widgets Tk, difficile pour vous d'avancer sans se planter dans la conception comme dans la syntaxe.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Citation Envoyé par Lulu et Mel ISN Voir le message
    Par contre nous avons un petit problème, quand on teste le programme, à la fin il plante au bout des 3 répétitions. Nous nous posons la question de savoir si il s'agit d'un problème de code ou bien d'un problème d'ordinateur ?
    Chez moi le programme se termine normalement. Ceci dit, avec Python, lorsqu'un programme "plante", çà affiche plein de lignes décrivant le problème (un traceback)... si vous ne le postez pas, difficile de savoir quelle peut en être la cause.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 10
    Par défaut
    Chez moi le programme se termine normalement. Ceci dit, avec Python, lorsqu'un programme "plante", çà affiche plein de lignes décrivant le problème (un traceback)... si vous ne le postez pas, difficile de savoir quelle peut en être la cause.
    Le problème c'est que rien ne s'affiche. Nous utilisons IDLE pour éditer, et toute nos pages se ferme ou alors rien ne répond et nous sommes obliger de fermer de force, donc nous ne savons pas ce qui fait planter. (Ça fait la même chose sur nos deux PC)

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

Discussions similaires

  1. Comment répéter une fonction un nombre de fois à la vitesse voulue ?
    Par progdebutant dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/02/2016, 10h50
  2. lancer une fonction à la fois avec des checkbox
    Par Malo1992 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/05/2012, 13h29
  3. Exécuter une fonction 1 fois lors du déchargement d'une page aspx
    Par soso78 dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 23/03/2010, 15h58
  4. Appeler une fonction plusieurs fois
    Par philippef dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/10/2007, 22h54
  5. Répéter une ligne N fois
    Par rs dans le forum SQL
    Réponses: 5
    Dernier message: 09/08/2007, 15h40

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