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 :

Exécuter plusieurs Frames en même temps


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Par défaut Exécuter plusieurs Frames en même temps
    Bonjour à tous,

    J'ai ce code, extrait d'un précédent Post, je remercie d'ailleur @wiztricks de m'avoir beaucoup aidé.
    Le principe, c'est un enchainement de question en cascade avec des réponses "yes" et "no". Le programme suit une arborescence TREE par raport à une liste de question Q. tel que tree soit sous la forme : (question,no,yes).
    Voici le code original :
    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
    import tkinter as tk
     
    frame_clicked = None
     
    def on_select(frame):
        global frame_clicked
     
        frame_clicked = frame
        root.after_idle(root.quit)
     
    def ask_question(text):
     
        frame = tk.Frame(root)
        frame._answer = v = tk.IntVar(frame, value=0)
        tk.Label(frame, text=text, width=30).grid(row=0, column=0)
     
        cmd = lambda: on_select(frame)
        b1 = tk.Radiobutton(frame, text="Yes", variable=v, value='1', command=cmd)
        b1.grid(row=1,column=0)
     
        b2 = tk.Radiobutton(frame, text="No", variable=v, value='2', command=cmd)
        b2.grid(row=1,column=1)
     
        return frame
     
     
     
    if __name__=='__main__':
        Q = ['ça va ?','a cause du mauvais temps ?','il fait beau?',
             "envie d'en parler ?",'il y a du soleil ?','il y a de la pluie ?']
     
        TREE = (0,
            (1,
             (4, -1, -1),
             (5, -1, -1)
             ),
            (2,
             (5, -1, -1),
             (3, -1, -1)
             )
            )    
        root = tk.Tk()
     
        ix = 0
        frames = []
        tree = TREE
        while 1:
            n, left, right = tree  # numéro de la question, sous-arbre Yes, sous-arbre No
            frame = ask_question(Q[n])
            frame._tree = tree # on stocke le sous arbre pour le retour arrière.
            frame.grid(row=ix)
            frames.append(frame)
            root.mainloop()
     
            row = frames.index(frame_clicked)
            print('index:', ix, 'row clicked:', row, 'answer:', frame_clicked._answer.get())
            if row == ix:
                ix += 1
                if (left, right) == (-1, -1):
                    break
            else:
                row += 1
                for w in (reversed(frames[row:])):
                    w.destroy()
                    frames.remove(w)
                tree = frame_clicked._tree  # récupère le s/arbre
                _ , left, right = tree      # re-définit s/arbre Yes, s/arbre No
                ix = row                    # on remet à jour l'index.
            answer = frame_clicked._answer.get()   # le s/arbre suivant 
            tree = right if answer == 1 else left  # dépend de la réponse...
    J'essaie maintenant de l'adapter à un autre programme. Pour ce faire j'ai modifié de tel sorte d'appeler une fonction (main()), j'ai créé une frame_question placé dans le root. Voici le code modifié :
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    import tkinter as tk
     
    frame_clicked = None
     
    def restart():
        frame_question.destroy()
        main()
     
    def on_select(frame):
        global frame_clicked
     
        frame_clicked = frame
        frame_question.after_idle(frame_question.quit)
     
    def ask_question(text):
     
        frame = tk.Frame(frame_question)
        frame._answer = v = tk.IntVar(frame, value=0)
        tk.Label(frame, text=text, width=30).grid(row=0, column=0)
     
        cmd = lambda: on_select(frame)
        b1 = tk.Radiobutton(frame, text="Yes", variable=v, value='1', command=cmd)
        b1.grid(row=1,column=0)
     
        b2 = tk.Radiobutton(frame, text="No", variable=v, value='2', command=cmd)
        b2.grid(row=1,column=1)
     
        return frame
     
     
    def main():
        global frame_question
    ##if __name__=='__main__':
    ##    Q = ['ça va ?','a cause du mauvais temps ?','il fait beau?',
    ##         "envie d'en parler ?",'il y a du soleil ?','il y a de la pluie ?']
    ## 
    ##    TREE = (0,
    ##        (1,
    ##         (4, -1, -1),
    ##         (5, -1, -1)
    ##         ),
    ##        (2,
    ##         (5, -1, -1),
    ##         (3, -1, -1)
    ##         )
    ##        )
        Q=['Does the team is defined ? ','Does the capacity is confirmed ? ']
        TREE=(0,(123,-1,-1),(1,-1,-1))
        frame_question=tk.Frame(root)
        frame_question.grid(row=0,column=0)
        list_answer=[]
        ix = 0
        frames = []
        tree = TREE
        while 1:
            n, left, right = tree  # numéro de la question, sous-arbre Yes, sous-arbre No
            if n==123 :
                print(list_answer)
                recommencer=tk.Button(frame_question,text='Restart',command=restart).grid(row=0,column=1)
                break
            frame = ask_question(Q[n])
            frame._tree = tree # on stocke le sous arbre pour le retour arrière.
            frame.grid(row=ix)
            frames.append(frame)
            frame_question.mainloop()
     
            row = frames.index(frame_clicked)
            list_answer.insert(row,frame_clicked._answer.get())
            if row == ix:
                ix += 1
                if (left, right) == (-1, -1):
                    print(list_answer)
                    recommencer=tk.Button(frame_question,text='Restart',command=restart).grid(row=0,column=1)
                    break
            else:
                row += 1
                for w in (reversed(frames[row:])):
                    w.destroy()
                    frames.remove(w)
                for i in (reversed(list_answer[row:])):
                    list_answer.remove(i)
                tree = frame_clicked._tree  # récupère le s/arbre
                _ , left, right = tree      # re-définit s/arbre Yes, s/arbre No
                ix = row                    # on remet à jour l'index.
            answer = frame_clicked._answer.get()   # le s/arbre suivant 
            tree = right if answer == 1 else left  # dépend de la réponse...
     
    root=tk.Tk()
    main()
    continuer=tk.Button(root,text='continuer',command='').grid(row=0,column=1)
    Je voudrai maintenant placer d'autres choses dans le root. Cependant si je lance la fonction main(), le programme vient se bloquer logiquement dans le :
    Comment palier à ce problème ? Dans le but de mettre plusieurs question de ce type en même temps dans des frames différentes style : frame_question_n°. Avec pourquoi pas une généralisation du main() qui prendrait des arguments tel que la frame de la question, la liste et l'arbre des questions. Un bouton est facile à mettre il suffit de le creer avant de lancer le main().

    Merci d'avance,

    Valentin.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par StabiloHB Voir le message
    Je voudrai maintenant placer d'autres choses dans le root. Cependant si je lance la fonction main(), le programme vient se bloquer logiquement dans le :
    Comment palier à ce problème ? Dans le but de mettre plusieurs question de ce type en même temps dans des frames différentes style : frame_question_n°. Avec pourquoi pas une généralisation du main() qui prendrait des arguments tel que la frame de la question, la liste et l'arbre des questions. Un bouton est facile à mettre il suffit de le creer avant de lancer le main()
    Ici, à l'instant t, vous avez une liste de questions "actives" dont on ne sort qu'en ayant terminé (i.e. lorsqu'on rencontre le "break").
    Si vous voulez avoir plusieurs listes de questions "actives", il va falloir sauvegarder/restaurer un état à partir de toutes les variables intéressantes (et probablement virer la boucle while).

    C'est un exercice intéressant pour se coltiner avec les facéties de tkinter... et puisqu'il y a plusieurs états "composites" voir comment utiliser les classes pour fabriquer çà.

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Par défaut
    Bonjour,

    Citation Envoyé par wiztricks Voir le message
    puisqu'il y a plusieurs états "composites" voir comment utiliser les classes pour fabriquer çà.
    J'ai commencé un petit truc, je crois avoir compris le principe du self. Il sert bien à "instancifier" une variable ?

    Cependant je n'arrive pas à lancer le code car il me demande un attribut supplémentaire, je ne peux pourtant pas mettre le self en argument car il n'est pas connu dans le programme...

    Voici 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    class question :
        def restart(self):
            self.frame_question.destroy()
     
        def on_select(self,frame):
            self.frame_clicked=self.frame
            self.frame_question.after_idle(self.frame_question.quit)
            self.main(self,Q,TREE)
     
        def construire(self,Q,TREE):
            self.frame_question=tk.Frame(root)
            self.frame_question.grid()
            self.list_answer=[]
            self.ix=0
            self.frames=[]
            self.tree=self.TREE
            main(Q,TREE)
     
        def ask_question(self,text):
            self.frame=tk.Frame(self.frame_question)
            self.frame._answer=self.v=tk.IntVar(self.frame,value=0)
            tk.Label(self.frame,text=text,widht=30).grid()
     
            self.cmd=lambda : self.on_select(self.frame)
            self.b1=tk.Button(self.frame,text='Yes',variable=self.v,value='1',command=self.cmd)
            self.b1.grid(row=1,column=0)
            self.b2=tk.Button(self.frame,text='No',variable=self.v,value='2',command=self.cmd)
            self.b2.grid(row=1,column=1)
     
            return self.frame
        def main(self):
            self.n,self.left,self.right=self.tree
            self.frame=self.ask_question(self.Q[n])
            self.frame.grid(row=self.ix)
            self.frame_question.mainloop()
     
            self.row=self.frames.index(self.frame_clicked)
            self.list_answer.insert(self.rox,self.frame_clicked._self.answer.get())
     
            if self.row==self.ix:
                self.ix+=1
                if (self.left,self.right)==(-1,-1):
                    print(self.list_answer)
                    return
            else :
                self.row+=1
                for w in (reversed(self.frames[self.row:])):
                    w.destroy()
                    self.frames.remove(w)
                for i in (reversed(self.list_answer[self.row:])):
                    self.list_answer.remove(i)
                self.tree=self.frame_clicked._self.tree
                _,self.left,self.right=self.tree
                self.ix=self.row
            self.answer=self.frame_clicked._self.answer.get()
            self.tree=self.right if self.answer==1 else self.left
     
    import tkinter as tk
    Q = ['ça va ?','a cause du mauvais temps ?','il fait beau?',"envie d'en parler ?",'il y a du soleil ?','il y a de la pluie ?']
    TREE = (0,(1,(4, -1, -1),(5, -1, -1)),(2,(5, -1, -1),(3, -1, -1)))
    question.construire(self,Q,TREE)
    Merci pour votre temps,

    Valentin.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par StabiloHB Voir le message
    J'ai commencé un petit truc, je crois avoir compris le principe du self. Il sert bien à "instancifier" une variable ?

    Cependant je n'arrive pas à lancer le code car il me demande un attribut supplémentaire, je ne peux pourtant pas mettre le self en argument car il n'est pas connu dans le programme...
    Les classes, c'est compliqué. Et compliqué signifie que vous ne pourrez pas piger çà en essayant n'importe quoi: il vous faut arrêter d'essayer de coder votre truc pour ouvrir un tuto. et prendre le temps d'apprendre ce que sont des classes, comment on les construit et comment on les utilise. Dans quelques jours/semaines, vous pourrez reprendre votre petit projet et essayer d'y appliquer les concepts que vous aurez appris.

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Par défaut
    Bon après une bonne lecture, je pense que je n'aurai pas le temps d'appliquer de manière poussée les class dans le cadre de mon emploi saisonnier.

    Merci de votre réponse, ce tuto m'a quand même appris quelques notions de class que je pourrai peut être utiliser l'an prochain pendant mon année en CPGE, sinon je vais me débrouiller autrement.

    Valentin.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    C'est pas si compliqué.
    D'abord on dégage le while:
    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
    import tkinter as tk
     
    ## frame_clicked = None
     
    ## def on_select(frame):
    ##     global frame_clicked
     
    ##     frame_clicked = frame
    ##     root.after_idle(root.quit)
     
    def ask_question(text):
     
        frame = tk.Frame(root)
        frame._answer = v = tk.IntVar(frame, value=0)
        tk.Label(frame, text=text, width=30).grid(row=0, column=0)
     
        cmd = lambda: on_response(frame)
        b1 = tk.Radiobutton(frame, text="Yes", variable=v, value='1', command=cmd)
        b1.grid(row=1,column=0)
     
        b2 = tk.Radiobutton(frame, text="No", variable=v, value='2', command=cmd)
        b2.grid(row=1,column=1)
     
        return frame
     
     
     
    if __name__=='__main__':
        Q = ['ça va ?','a cause du mauvais temps ?','il fait beau?',
             "envie d'en parler ?",'il y a du soleil ?','il y a de la pluie ?']
     
        TREE = (0,
            -1,
            (2,
             (5, -1, -1),
             (3, -1, -1)
             )
            )    
        root = tk.Tk()
     
        ix = 0
        frames = []
        tree = TREE
     
        def next_question():
            n, left, right = tree  # numéro de la question, sous-arbre Yes, sous-arbre No
            frame = ask_question(Q[n])
            frame._tree = tree # on stocke le sous arbre pour le retour arrière.
            frame.grid(row=ix)
            frames.append(frame)
            ## root.mainloop()
     
        def on_response(frame_clicked):
            global ix, tree
            row = frames.index(frame_clicked)
            print('index:', ix, 'row clicked:', row, 'answer:', frame_clicked._answer.get())
            if row == ix:
                ix += 1
     
            else:
                row += 1
                for w in (reversed(frames[row:])):
                    w.destroy()
                    frames.remove(w)
                ## tree = frame_clicked._tree  # récupère le s/arbre
                ## _ , left, right = tree      # re-définit s/arbre Yes, s/arbre No
                ix = row                    # on remet à jour l'index.
            tree = frame_clicked._tree  # récupère le s/arbre
            _ , left, right = tree      # re-définit s/arbre Yes, s/arbre No
            answer = frame_clicked._answer.get()   # le s/arbre suivant 
            tree = right if answer == 1 else left  # dépend de la réponse...
            if tree == -1:
               root.quit()
            else:
                next_question()
        next_question()
        tk.mainloop()
    Ensuite on regroupe les fonctions créées dans une class "Dialog":
    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
    import tkinter as tk
     
    def ask_question(dialog, text):
     
        frame = tk.Frame(root)
        frame._answer = v = tk.IntVar(frame, value=0)
        tk.Label(frame, text=text, width=30).grid(row=0, column=0)
     
        cmd = lambda: dialog.on_response(frame)
        b1 = tk.Radiobutton(frame, text="Yes", variable=v, value='1', command=cmd)
        b1.grid(row=1,column=0)
     
        b2 = tk.Radiobutton(frame, text="No", variable=v, value='2', command=cmd)
        b2.grid(row=1,column=1)
     
        return frame
     
    class Dialog:
        def __init__(self, questions, tree):
            self.ix = 0
            self.frames = []
            self.tree = tree
            self.questions = questions
     
        def next_question(self):
            n, left, right = self.tree  # numéro de la question, sous-arbre Yes, sous-arbre No
            frame = ask_question(self, self.questions[n])
            frame._tree = self.tree # on stocke le sous arbre pour le retour arrière.
            frame.grid(row=self.ix)
            self.frames.append(frame)
     
        def on_response(self, frame_clicked):
            row = self.frames.index(frame_clicked)
            print('index:', self.ix, 'row clicked:', row, 'answer:', frame_clicked._answer.get())
            if row == self.ix:
                self.ix += 1
            else:
                row += 1
                for w in (reversed(self.frames[row:])):
                    w.destroy()
                    self.frames.remove(w)
                self.ix = row                    # on remet à jour l'index.
            tree = frame_clicked._tree  # récupère le s/arbre
            _ , left, right = tree      # re-définit s/arbre Yes, s/arbre No
            answer = frame_clicked._answer.get()   # le s/arbre suivant 
            self.tree = right if answer == 1 else left  # dépend de la réponse...
            if self.tree == -1:
               root.quit()
            else:
               self.next_question()
     
     
    if __name__=='__main__':
        Q = ['ça va ?','a cause du mauvais temps ?','il fait beau?',
             "envie d'en parler ?",'il y a du soleil ?','il y a de la pluie ?']
     
        TREE = (0,
            -1,
            (2,
             (5, -1, -1),
             (3, -1, -1)
             )
            )    
        root = tk.Tk()
     
     
        dialog = Dialog(Q, TREE)
        dialog.next_question()
        tk.mainloop()
    Puis on ouvre la possibilité à plusieurs dialogues:
    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
    import tkinter as tk
     
    def ask_question(dialog, text):
     
        frame = tk.Frame(dialog)
        frame._answer = v = tk.IntVar(frame, value=0)
        tk.Label(frame, text=text, width=30).grid(row=0, column=0)
     
        cmd = lambda: dialog.on_response(frame)
        b1 = tk.Radiobutton(frame, text="Yes", variable=v, value='1', command=cmd)
        b1.grid(row=1,column=0)
     
        b2 = tk.Radiobutton(frame, text="No", variable=v, value='2', command=cmd)
        b2.grid(row=1,column=1)
     
        return frame
     
    class Dialog(tk.Frame):
        def __init__(self, master, questions, tree):
            super().__init__(master)
            self.ix = 0
            self.frames = []
            self.tree = tree
            self.questions = questions
     
        def next_question(self):
            n, left, right = self.tree  # numéro de la question, sous-arbre Yes, sous-arbre No
            frame = ask_question(self, self.questions[n])
            frame._tree = self.tree # on stocke le sous arbre pour le retour arrière.
            frame.grid(row=self.ix)
            self.frames.append(frame)
     
        def on_response(self, frame_clicked):
            row = self.frames.index(frame_clicked)
            print('index:', self.ix, 'row clicked:', row, 'answer:', frame_clicked._answer.get())
            if row == self.ix:
                self.ix += 1
            else:
                row += 1
                for w in (reversed(self.frames[row:])):
                    w.destroy()
                    self.frames.remove(w)
                self.ix = row                    # on remet à jour l'index.
            tree = frame_clicked._tree  # récupère le s/arbre
            _ , left, right = tree      # re-définit s/arbre Yes, s/arbre No
            answer = frame_clicked._answer.get()   # le s/arbre suivant 
            self.tree = right if answer == 1 else left  # dépend de la réponse...
            if self.tree == -1:
               root.quit()
            else:
               self.next_question()
     
     
    if __name__=='__main__':
        Q = ['ça va ?','a cause du mauvais temps ?','il fait beau?',
             "envie d'en parler ?",'il y a du soleil ?','il y a de la pluie ?']
     
        TREE = (0,
            -1,
            (2,
             (5, -1, -1),
             (3, -1, -1)
             )
            )    
        root = tk.Tk()
     
     
        dialog = Dialog(root, Q, TREE)
        dialog.pack()
        dialog.next_question()
     
        tk.mainloop()
    Vous voyez, à chaque étape une petite variation.
    Mais il faut du temps pour maîtriser le pinceau et si vous n'avez pas la patience d'apprendre....

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

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

Discussions similaires

  1. [Batch] Exécuter des commandes sur plusieurs serveurs en même temps
    Par Med_be dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 27/03/2015, 19h05
  2. [WD19] Exécuter plusieurs procédures en même temps
    Par lololebricoleur dans le forum WinDev
    Réponses: 2
    Dernier message: 30/01/2014, 11h39
  3. exécuter plusieurs scripts en même temps
    Par TgZ-le_joker_fou dans le forum Langage
    Réponses: 5
    Dernier message: 24/12/2011, 10h33
  4. Exécuter plusieurs fonctions en même temps
    Par vash641 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/05/2009, 15h50
  5. Exécuter plusieurs requêtes en même temps
    Par k_boy dans le forum Bases de données
    Réponses: 9
    Dernier message: 21/02/2008, 12h51

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