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

Tkinter Python Discussion :

Liste en série / liste randomisée


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut Liste en série / liste randomisée
    Bonjour à tous,

    Je souhaite développer un script qui puisse réaliser ce qui suit :

    Présentation d’une série de textes dans un ordre bien défini avec pour chacun des textes 5 questions différentes à présenter dans un ordre aléatoire.

    Je précise :
    Affichage d’un texte1 (frame supérieur) puis affichage de 5 questions (frame inférieur) dans un ordre aléatoire sans remise. Chaque texte doit rester à l’écran tant que les 5 questions n’ont pas été posées.
    Affichage d’un texte 2 avec 5 autres questions
    Affichage d’un texte 3 avec 5 autres questions etc etc

    Je voudrais faire apparaître et disparaître les textes et les questions avec des Buttons

    Le script ci-dessous vous donnera un aperçu mais qui est loin d’être au top !!!

    Merci d’avance pour votre aide.



    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
    #! /usr/bin/env python
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
    from random import randrange
     
     
    liste1=["texte1","texte2","texte3","texte4","texte5","texte6","texte7","texte8","texte9","texte10"]
    questions1=["question11","question12","question13","question14","question15"]
    questions2=["question21","question22","question23","question24","question25"]
    #questions3
    #questions4
    #.........
    #......
     
    fen1 = Tk()
    fen1.configure(bg='white')
    fen1.title("PIA")
    larg,haut=fen1.winfo_screenwidth(),fen1.winfo_screenheight()
    fen1.overrideredirect(1)
    fen1.geometry("%dx%d+0+0"%(larg,haut))
    cadre=Frame(fen1, bg='white',width=2000, height=2000)
    cadre.place(x=160, y=120)	
    cadre2=Frame(fen1, bg='white',width=1000, height= 300, relief=RIDGE)
    cadre2.place(x=160, y=600)
     
    def L1():
        a=0
        while (a<9):
            a=a+1
        for texte in liste1:
            Message(cadre, text=liste1[a], bg='white',font='Colibri 35', justify='left', width=1000).pack()
     
     
    def QL11():
        #cadre.destroy()
        a=0
        while (a<5):
            a=a+1
            r=randrange(5)
        Message(cadre2, text=questions[r], bg='white',font='Colibri 35 bold', justify='left', width=1000).pack()    
     
     
     
     
    Button(fen1,text='Phrases',command=L1, bg='grey').place(x=30, y=700)
    Button(fen1,text='Questions',command=QL11, bg='grey').place(x=30, y=750)
    Button(fen1,text='Quitter',command=fen1.destroy, bg='grey').place(x=30, y=800)
     
     
    fen1.mainloop()

  2. #2
    Membre expérimenté Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    EDIT : je viens de m'apercevoir que tu avais ouvert plusieurs sujet sur la question, ce qui suit te seras sans doute inutile.

    J'ai pas bien compris.
    tu affiche texte 1, puis les 5 question associées, tirées dans un ordre aléatoire dans questions1[].
    Puis tu affiche texte2 en dessous de texte 1 et tu écrases les questions précédente avec celles de questions2[]?
    Ou alors tu efface aussi texte 1 pour mettre texte 2?

    Quoi qu'il en soit :

    1) tu devrais plutôt demander conseil pour les points précis qui te pose problème, pour qu'on puisse t'aider.
    2) dans ton code actuel :
    2.1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        a=0
        while (a<9):
            a=a+1
        for texte in liste1:
            Message(cadre, text=liste1[a], bg='white',font='Colibri 35', justify='left', width=1000).pack()
    Ca ça m'étonnerait que ça fasse ce que tu attends :
    Tu initialise ton a à 0, puis tu l'incrémente jusqu'à ce qu'il vaille 9, et une fois qu'il vaut 9 tu décide d'afficher liste1[a], c'est à dire texte10 autant de fois que tu as d'élément dans ta liste.

    Si tu veux afficher 1 fois chaque éléments de ta liste une seule boucle suffis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for texte in liste1:
       Message(cadre, text=liste1[texte], bg='white',font='Colibri 35', justify='left', width=1000).pack()
    Quoi que tu veuille réellement faire ton while ne sert à rien, autant directement écrire a = 9 ...

    2.2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message(cadre2, text=questions[r], bg='white',font='Colibri 35 bold', justify='left', width=1000).pack()
    La liste questions n'existe pas (tu as questions1 et questions2), donc forcement si tu clique sur le bouton "Questions" tu auras une erreur (bien méritée )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut
    Bonjour Gaillac,

    Je vais tenter de mieux m'expliquer :
    Le texte 1 s'affiche et reste affiché tant que les 5 questions n'ont pas été posées (Button questions). Chaque question posée écrase la précédente.
    Une fois les 5 questions posées pour le texte 1, le texte 2 s'affiche (Button textes) écrase le précédent puis les 5 questions portant sur le texte 2 sont posées, et ainsi de suite.
    Voilà, j'espère avoir été plus clair.

    Merci d'avance

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut
    j'ai oublié de modifier la liste questions1, voici le code corrigé :
    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
    #! /usr/bin/env python
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
    from random import randrange
     
     
    liste1=["texte1","texte2","texte3","texte4","texte5","texte6","texte7","texte8","texte9","texte10"]
    questions1=["question11","question12","question13","question14","question15"]
    questions2=["question21","question22","question23","question24","question25"]
    #questions3
    #questions4
    #.........
    #......
     
    fen1 = Tk()
    fen1.configure(bg='white')
    fen1.title("PIA")
    larg,haut=fen1.winfo_screenwidth(),fen1.winfo_screenheight()
    fen1.overrideredirect(1)
    fen1.geometry("%dx%d+0+0"%(larg,haut))
    cadre=Frame(fen1, bg='white',width=2000, height=2000)
    cadre.place(x=160, y=120)	
    cadre2=Frame(fen1, bg='white',width=1000, height= 300, relief=RIDGE)
    cadre2.place(x=160, y=600)
     
    def L1():
        a=0
        while (a<9):
            a=a+1
        for texte in liste1:
            Message(cadre, text=liste1[a], bg='white',font='Colibri 35', justify='left', width=1000).pack()
     
     
    def QL11():
        #cadre.destroy()
        a=0
        while (a<5):
            a=a+1
            r=randrange(5)
        Message(cadre2, text=questions1[r], bg='white',font='Colibri 35 bold', justify='left', width=1000).pack()    
     
     
     
     
    Button(fen1,text='Phrases',command=L1, bg='grey').place(x=30, y=700)
    Button(fen1,text='Questions',command=QL11, bg='grey').place(x=30, y=750)
    Button(fen1,text='Quitter',command=fen1.destroy, bg='grey').place(x=30, y=800)
     
     
    fen1.mainloop()

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut
    J'ai avancé en petit peu en regroupant diverses infos :
    Voici mon nouveau code çà sera encore plus clair :
    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
    #! /usr/bin/env python
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
    from random import randrange
     
     
    liste1=["texte1","texte2","texte3","texte4","texte5","texte6","texte7","texte8","texte9","texte10"]
    questions1=["question11","question12","question13","question14","question15"]
    questions2=["question21","question22","question23","question24","question25"]
    #questions3
    #questions4
    #.........
    #......
     
    fen1 = Tk()
    fen1.configure(bg='white')
    fen1.title("PIA")
    larg,haut=fen1.winfo_screenwidth(),fen1.winfo_screenheight()
    fen1.overrideredirect(1)
    fen1.geometry("%dx%d+0+0"%(larg,haut))
    cadre=Frame(fen1, bg='white',width=2000, height=2000)
    cadre.place(x=160, y=120)	
    cadre2=Frame(fen1, bg='white',width=1000, height= 300, relief=RIDGE)
    cadre2.place(x=160, y=600)
     
    def L1():
        Message(cadre, text=liste1[0], bg='white',font='Colibri 35', justify='left', width=1000).pack()
     
    def QL11() : 
        for j in range(5):
            a=randrange(len(questions1))
            cadre2=Frame(fen1, width=2000, height=2000)
            cadre2.place(x=160, y=700)	
            Message(cadre2, text=questions1[a], bg='white',font='Colibri 35', justify='left', width=1000).pack()
     
     
     
    Button(fen1,text='Textes',command=L1, bg='grey').place(x=30, y=700)
    Button(fen1,text='Questions',command=QL11, bg='grey').place(x=30, y=750)
    Button(fen1,text='Quitter',command=fen1.destroy, bg='grey').place(x=30, y=800)
     
     
    fen1.mainloop()
    Mon gros souci est que je n'arrive pas à faire en sorte qu'en appuyant sur le Button "Textes" il passe au suivant tout en écrasant le précédent et tout en effaçant la dernière question...
    C'est un peu plus clair???

  6. #6
    Membre expérimenté Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Première remarque : je ne vois pas l'intéret de faire 2 boutons, puisuqe tout est séquencielle :
    Tu affiche le texte, puis tes questions, puis le nouveaux texte, puis les nouvelle question.
    Tu ne peux pas changer de texte tant que les 5 questions n'ont pas défilées, et une fois que tu as eu les 5 questions tu es obligé de changer le texte.
    Donc un seul bouton suffis, non?

Discussions similaires

  1. [Lisp][IA] Supprimer une liste d'une liste de listes
    Par Superleo2999 dans le forum Lisp
    Réponses: 5
    Dernier message: 22/03/2010, 10h51
  2. caster une List<Object> en List<..>
    Par K-Kaï dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 17h43
  3. Réponses: 16
    Dernier message: 22/05/2006, 10h48
  4. Ajout de listes dans une liste
    Par mcdonald dans le forum Général Python
    Réponses: 4
    Dernier message: 10/01/2006, 22h39
  5. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32

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