EXPLICATION LIGNE DE CODE [Résolu]

Signaler
-
 chlochlo2 -
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

Messages postés
1070
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
10 juin 2021
120
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...
Messages postés
1070
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
10 juin 2021
120
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()
Messages postés
1070
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
10 juin 2021
120
En fait, dans ma 2ème réponse, j'ai corrigé la ligne du bouton...
oui excuse moi je n’avais pas reçu le deuxième message merci beaucoup !