EXPLICATION LIGNE DE CODE

Résolu
Bonjour, j'aurais aimé que l'on puisse m'expliquer les lignes de code suivantes LIGNE PAR LIGNE (c'est très important) Merci beaucoup ! c'est un projet pour le lycée... mais je ne suis pas très forte... merci de votre aide !!!
from tkinter import*

def calcul_caracteres(texte):
    compteur=0
    for i in range(len(texte)):
        compteur+=1
    return compteur+1

fenetre=Tk()
texte_entree=Label(fenetre,text="entrez un texte")
texte_entree.grid(row=0,column=0)
entree=Entry(fenetre,width=50)
entree.grid(row=5,column=0)
texte_compteur=StringVar()
texte_compteur.set("0")
label_compteur=Label(fenetre,textvariable=texte_compteur)
label_compteur.grid(row=10,column=5)

def change_texte(texte):
    texte_compteur.set(str(calcul_caracteres(texte)))

bouton_compteur=Button(fenetre,text="calculer le nombre de caracteres",command=change_texte(entree.get()))
bouton_compteur.grid(row=5,column=5)
label_texte=Label(fenetre,text="Votre texte contient")
label_texte.grid(row=10,column=4)
label_texte2=Label(fenetre,text="caracteres")
label_texte2.grid(row=10,column=6)



fenetre.mainloop()


EDIT : Ajout des balises de code.

COMMENT UTILISER LES BALISES DE CODE

3 réponses

  1. Bonjour chlochlo,

    Déjà, ce code ne fonctionne pas:

    bouton_compteur=Button(fenetre,text="calculer le nombre de caracteres",command=change_texte(entree.get()))


    On ne peut pas passer d'arguments à une fonction callback d'un widget
    il faut passer par une fonction lambda

    Une fois que c'est corrigé, ça fonctionne:



    Ceci dit ca affiche 7 caractère au lieu de 6, car on ajoute 1 au compteur:

    return compteur+1


    Je ne sais pas pourquoi...
    1. Apres, sur l'aspect présentation, c'est bien de mettre d'abord les définitions de fonctions puis
      le programme principal : création de la fenêtre et des widgets:
      # -*- coding:Latin-1 -*-
      
      from tkinter import*
      
      def calcul_caracteres(texte):
          compteur=0
          for i in range(len(texte)): compteur+=1
          return compteur
      
      def change_texte(texte):
          texte_compteur.set(str(calcul_caracteres(texte)))
      
      fenetre=Tk()
      
      texte_entree=Label(fenetre,text="entrez un texte")
      texte_entree.grid(row=0,column=0)
      
      entree=Entry(fenetre,width=50)
      entree.grid(row=5,column=0)
      
      texte_compteur=StringVar()
      texte_compteur.set("0")
      
      label_compteur=Label(fenetre,textvariable=texte_compteur)
      label_compteur.grid(row=10,column=5)
      
      bouton_compteur=Button(fenetre,text="calculer le nombre de caracteres",command=lambda:change_texte(entree.get()))
      bouton_compteur.grid(row=5,column=5)
      
      label_texte=Label(fenetre,text="Votre texte contient")
      label_texte.grid(row=10,column=4)
      
      label_texte2=Label(fenetre,text="caracteres")
      label_texte2.grid(row=10,column=6)
      
      fenetre.mainloop()
      1. En fait, dans ma 2ème réponse, j'ai corrigé la ligne du bouton...
        1. oui excuse moi je n’avais pas reçu le deuxième message merci beaucoup !