Bonjour,

J'ai une question d'ordre général. Dans une classe que j'ai crée, un bouton sert à lancer une méthode. Cette méthode récupère une liste créée par une autre méthode et la modifie (il y a un tirage au sort et le nom tiré au sort est sorti de la liste).

Chaque fois que je clique sur le bouton, la méthode commence à zéro, ce qui est plutôt normal et donc je n'arrive à sortir qu'un nom de la liste.

Ma question : j'aimerais un bouton (probablement un autre bouton, car je ne vois pas comment un seul bouton peut lancer la méthode et y rester en boucle) qui modifie la liste comme décrit ci-dessus, mais si je re-clique sur le même bouton, cela reprend la liste modifiée obtenu en fin de méthode et un deuxième nom est supprimé…et ainsi de suite jusqu'à ce que la liste soit vide.

Un aperçu simplifié du 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
 
from tkinter import *
import random
 
class Tirage(object):
    def __init__(self):
        self.root = Tk()
        Button(self.root, text="Tirer au sort", command = self.tirer).grid(row=2, column=1)
        self.root.mainloop()
 
    def liste_des_mots(self):
        #J'ai coupé cette partie un peu longuette de la méthode car aucun lien avec ma question
        return self.ma_liste
 
    def tirer(self):#cette méthode complète permet de modifier la liste, mais via le bouton ci-dessus, 
#cela recommence au départ à chaque fois, ce qui est normal
        liste = self.liste_des_mots()
# ma question correspond à la suite, j'aimerais en faire une boucle contrôlée
# par un bouton (chaque fois que je clique un nom est tiré au sort et oté de la liste)
        self.resultat = random.choice(liste)
        Label(self.root, text=self.resultat).grid(row=2, column=2)
        liste.remove(self.resultat)
# C'est là mon problème, comment faire pour que la nouvelle liste soit utilisée pour le tirage suivant 
#et ce grâce à un bouton (j'arrive à le faire avec un input et une condition mais je veux éviter la console, tout en interface graphique.)
 
 
 
 
if __name__ == '__main__':
 
    f= Tirage()