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 :

Problème d'affichage et de suppression de label [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Par défaut Problème d'affichage et de suppression de label
    Bonjour à tous,
    Alors voici mon problème, je travaille sur un programme de ramassage de devoir aléatoire pour notre projet de spécialité ISN. Je souhaite créer un affichage qui permet de faire défiler des noms en les affichant puis en les effaçant (comme une machine de casino), cependant quand j'appuie sur le bouton lançant le programme, on ne m'affiche que la fin. Comment faire ? Voici le programme (ne tenez pas compte des commentaires, je n'ai pas fini) :

    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
    from tkinter import *
    from random import *
    from time import *
     
     
    f=open('liste élèves.txt','r')   ### OUVERTURE DU FICHIER EN MODE READ
    liste_eleve=[]                   ### On déclare la liste des élèves et la liste des élèves choisis
    liste_elus=[]
    for i in f:                      ### Pour chaque nom d'élève dans le fichier
        i=i.replace('\n','')         ### On enlève les retours à la ligne (ou \n)
        liste_eleve.append(i)        ### Et on ajoute chaque nom dans la liste liste_eleve
     
    ### on définit la fonction défilement, défilant les noms des élèves et qui s'arrete au nom de l'élève choisit
    def defilement():
     
        pl=295
        n=int(texte.get())           ### on définit n le nombre de devoirs entré dans l'entrée
    ### pour chaque devoir à ramasser, on exécute l'algorithme suivant
        for i in range(n):
            h=choice(liste_eleve)    ### h est définit comme le nom tiré au hasard
        ### pour chaque élève dans la liste, on affiche chaque nom et le programme s'arrête quand le nom tiré au hasard est affiché
            for u in range(0,len(liste_eleve)):
                lbl1.pack()
                lbl1['text']=liste_eleve[u]
                lbl1.place(x=75,y=100)
                sleep(0.2)
                lbl1.pack_forget()
                sleep(0.2)                               
                if liste_eleve[u]==h:
                    break            ### break ici arrête le programme si le nom affiché est le nom choisi au hasard
            liste_eleve.remove(h)    ### on enlève de la liste d'élève le nom choisi et on le rajoute à la liste des élus
            liste_elus.append(h)
            lbl=Label(top, text=h, font=("Arial",8, "bold italic"), background="black", fg="red").place(x=10,y=pl)   ### on met chaque élève dans un label
            pl=pl+15
     
        for nom in liste_elus:
            liste_eleve.append(nom)
     
     
     
    def recommencer():
        can=Canvas(top, width="370",height="220", background="black", bd=0).place(x=0,y=290)
     
     
    ### à partir de là, on crée l'affichage qui doit afficher à la façon d'un jackpot les noms des élèves et s'arrête au nom de l'élu
    top= Tk()
    top.geometry("372x550+500+200")
    top.title("Programme de ramassage de devoir")
    top.resizable(width=False,height=False)
     
    img = PhotoImage(file = "jackpot.png")
    lebel = Label(top, image = img)
    lebel.place(x="0",y="0")
     
     
    def action():
        canvas.coords(texte,"225","75")
     
     
    canvas=Canvas(top, width="372", height="310", background="black")
    canvas.place(x='0',y='200')
    texte=canvas.create_text("170","80",text="Le(s) nom(s) de(s) l'élève(s) dont le devoir est à ramasser est (sont):", font="Arial 8",fill="white")
    texte2=canvas.create_text("120","20",text="Entrez le nombre de devoirs à ramasser:", font="Arial 10",fill="white")
    can1=Canvas(top, width="370",height="220", background="black").place(x=0,y=290)
    can2 = Canvas(top, height = 100, width = 225, bg = 'gold').place(x=75,y=60)
    lbl1=Label(can2, font=("Arial",10, "bold italic"))
     
     
    typ=IntVar()
     
    label=Label(top)
     
     
    label['fg']='blue'
    label.place(x='00',y='530')
     
    texte = Entry(top,width=3, font=("arial",20),textvariable=typ)
    texte.place(x="10",y="230")
     
     
    bouton1= Button(top, text="Lancer",command=defilement).place(x=100,y=235)    
    Bouton_recommencer=Button(top, text='Réinitialiser', command=recommencer).place(x=170,y=235)
    BoutonQuitter= Button(top, text='Quitter', command=top.destroy)
    BoutonQuitter.place(x=160,y=520)
     
    f.close()                       ### FERMETURE DU FICHIER
    top.mainloop()
    Merci d'avance, Nicolas

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

    Citation Envoyé par Nicoca-colas Voir le message
    cependant quand j'appuie sur le bouton lançant le programme, on ne m'affiche que la fin. Comment faire ?
    Tant que defilement ne se termine pas, tkinter n'a pas la main et il ne peut pas mettre à jour l'affichage. Lorsque la fonction se termine, il fait tout d'un coup, et vous ne voyez pas les différentes étapes. C'est ce qui fait que defilement est plus qu'une simple fonction: un callback.

    La solution que vous devriez apprendre à connaître s'appelle .after(*). Et pour réaliser des animations avec tkinter en l'utilisant, il faut ouvrir un tuto. pour apprendre car ce n'est pas "intuitif".
    (*) il y en a d'autres mais elles sont plus difficiles à comprendre (et donc à mettre en œuvre correctement).

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. [Débutant] probléme d'affichage de label
    Par cyriane dans le forum VB.NET
    Réponses: 7
    Dernier message: 09/05/2012, 16h05
  2. [Geoserver] Problème d'affichage des labels en arabe
    Par chouf2 dans le forum SIG : Système d'information Géographique
    Réponses: 0
    Dernier message: 06/09/2010, 16h59
  3. Problème affichage photo après suppression
    Par ThieBEN dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/03/2008, 16h22
  4. Problème d'affichage de date dans un Label
    Par L'aigle de Carthage dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2007, 09h00
  5. JTree : problème d'affichage ajout/suppression noeud
    Par rnan dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2006, 08h12

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