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 :

[Tkinter] Comment changer le texte/affichage d'un bouton correctement [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut [Tkinter] Comment changer le texte/affichage d'un bouton correctement
    Bonjour, je cherche à changer la couleur/texte d'un bouton.
    La fonction changeletextedubouton() ne marche que si on organsie le planatage de creerunaffichage()
    changechangeletextedubouton() ne marche que si on ignore chnagechangechangeletextedubouton()(j'ai testé si c'etait une histoire de delai mais ce n
    chnagechangechangeletextedubouton() fonctionne toujours correctement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    def creerunaffichage():
          tempsenrigstrement=float(tempsmaxentree.get())        #recupèrer la valeur de l'insert 
          creer les valeurs à afficher
          A=enresgistrement(tempsenrigstrement)  #j'appèle une fonction qui enregiste ce qui sort du micro pendant la durée tempsenregsitrement
     
         changechangeletextedubouton()
     
          [elipse superflus pour ce problème]
     
          changechangechangeletextedubouton()
          "affichage boucle principale"
          window.mainloop()

    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
     
    def doublefonction():
          changeletextedubouton()
          creerunaffichage()
     
     
     
    def changeletextedubouton():           #activé quand on appuie sur le bouton
          bouton1['text']='Veuillez patienter'
          bouton1['bg']='red'
     
     
     
    def changechangeletextedubouton():
          bouton1['text']='enregistrement fini'
          bouton1['bg']='red'
     
     
    def changechangechangeletextedubouton():   #celui ci marche
          bouton1['text']="Graphe fini relancer l'enregistrement"
          bouton1['bg']='green'
    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
     
    fenetre = Tk()
    l
    ## Création d'une frame
    frame = Frame(fenetre,bg=couleur1, bd=0, highlightthickness=0)
     
     
    #creation de l'input
    couleurchange='red'
    tempsmaxentree=Entry(frame,font=("Courrier",20), bg=couleurchange, fg='black')
    tempsmaxentree.pack()
     
    ## Création d'un bouton, permettant de lancer la fonction creerunaffichage
    bouton1 = Button(frame, text="Lancer l'enregistrement", font=("Courrier",20), bg='green',activebackground='red', fg='black', command=doublefonction)
    bouton1.pack()
     
    frame.pack(expand=True)
     
    fenetre.mainloop()

  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,

    creerunaffichage est une fonction appelée par doublefonction qui est un callback (appelé lorsqu'on clique sur un Button). Toutes mises à jour de l'affichage "demandées" par l'exécution d'un callback ne seront prises en compte (effectuées) par tkinter que lorsque le callback sera terminé et lui aura "rendu la main".

    Et si dans un callback vous changez plusieurs fois la couleur du background d'un widget, vous ne verrez que la dernière couleur. Après, si la couleur du background est là pour indiquer à l'utilisateur la progression d'une tâche qui dure longtemps, on pourra forcer les mises à jour via des appels à .update_idletasks.
    Exemple:
    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
    import tkinter as tk
    import time
     
    def doit():
        for color in ('red', 'blue', 'green'):
            label['bg'] = color
            label.update_idletasks()
            time.sleep(0.3)
     
     
    root = tk.Tk()
    label = tk.Label(root, text='123', bg = 'green')
    label.pack()
    tk.Button(root, text='do it', command=doit).pack()
    tk.mainloop()
    note: il est contre-intuitif d'utiliser des time.sleep dans un callback car on cherchera à ce qu'il se termine au plus vite. C'est juste là pour illustrer l'activité qui dure.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut
    Super,
    Merci beaucoup pour les explications, j'ai adapté tout ça pour les boutons, ça fonctionne parfaitement.

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

Discussions similaires

  1. [Debutant] Comment changer de nom de domaine
    Par Reynio dans le forum Domaines
    Réponses: 6
    Dernier message: 20/03/2009, 13h27
  2. Comment changer le texte d'un controle "STATIC" ?
    Par Pierre.g dans le forum Windows
    Réponses: 2
    Dernier message: 07/10/2006, 19h34
  3. Réponses: 5
    Dernier message: 09/08/2006, 16h48
  4. [debutant]Comment changer la grille d'une form?
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 14/05/2006, 15h42
  5. [debutant] Comment organiser du texte dans un <td>?
    Par Jayceblaster dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/04/2006, 17h40

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