EXPLICATION LIGNE DE CODE
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
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 !!!
EDIT : Ajout des balises de code.
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
-
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... -
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() -
En fait, dans ma 2ème réponse, j'ai corrigé la ligne du bouton...