Pb dans la récupération du contenu d'un champs d'un widget Entry

Résolu/Fermé
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 - 28 déc. 2020 à 14:19
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 - 28 déc. 2020 à 18:33
Bonjour,

j'aurai 2 questions:

1) En attachement un squelette de programme pour matérialiser mon problème.
je tente de récupérer dans une variable MMAA que je "print" en ligne 40 le contenu d'un champs saisi au travers d'une Entry.
Visiblement je m'y prend mal car en ligne 40 la variable est vide.

2) Je compte utiliser l'environnement graphique PYTHON à la place d'un shell Unix pour transmettre des paramètres à un traitement batch (Plus esthétique et plus simple pour la gestion des contrôles des données saisies) d'ou l'utilisation de Label + Entry.
Par contre la partie interactive devient le programme principal et du coup le traitement principal devient une procédure déclenchée par command.
Est-il possible de créer 2 programmes, l'un gérant la partie interactive et qui lancerait le second objet du traitement en lui passant les arguments ? (Façon exec en langage C)

Merci pour votre aide

Claude

#!/usr/bin/env python3.9
# -*- coding:Utf-8 -*
from tkinter import *
import csv
import os

def lancement():
    global i_file
    global o_file_synt
    global o_file_detail
    
    i_file=i_file + MMAA + ".csv"
    o_file_synt=o_file_synt + MMAA + ".csv"
    fd=open(o_file_detail,'w')
    fd.write("\nMouvements ING sur le mois de : " + MMAA + "\n")
    fd.close()
    with open(i_file, 'r') as csv_file1:
        csv_reader = csv.reader(csv_file1, delimiter=';')
    csv_file1.close()

    csv_file2=open(o_file_synt, mode='w')
    csv_file2.write('       ING' ';' 'AU DEBIT' ';' 'AU CREDIT\n')
    csv_file2.close()
    
### main ##########################################################
i_file = '/users/xxxxxxxxx/PYTHON/essai/CBING'
o_file_synt = '/xxxxxxxxx/PYTHON/essai/SYNTHESE'
o_file_detail = '/xxxxxxxxx/PYTHON/essai/result_ing.txt'

####### Saisie MMAA  #######
fen1=Tk()
fen1.title("Synthèse mensuelle du compte courant ING")
fen1.geometry("420x200")
can_gen=Canvas(fen1, width=360, height=140, bg ="#B0F2B6")
can_gen.place(x=30,y=30)
Label(can_gen, text= "Mois et Année(MMAA) : ",bg='#FEFEE2',fg='blue').place(x=40, y= 50)
saisir=StringVar()
Entry(can_gen,textvariable=saisir, width=4).place(x=280,y=50)
MMAA=saisir.get()
print("MMAA: ",MMAA)
Button(can_gen,text= "Validez",command = lancement).place(x=180, y= 80)

fen1.mainloop()
fen1.destroy()

Configuration: Macintosh / Safari 14.0.2
A voir également:

5 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
28 déc. 2020 à 16:24
Bonjour cvan,

Moi, quand je veux récupérer le contenu d'un Entry, je fais comme ça:

e1 = Entry(can_gen, width=4)
e1.place(x=280,y=50)

et dans la fonction lancement() :

MMAA = e1.get()
1
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
28 déc. 2020 à 16:42
Merci Phil,
Tu confirmes ce que yg_be disait.
0
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1 > cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024
28 déc. 2020 à 16:49
Même encore plus simple, tu n'utilises pas une variable de type StringVar() en l'associant au paramètre "textvariable= xxxx" de l'Entry.
0
yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025 Ambassadeur 1 568
28 déc. 2020 à 15:25
bonjour,
comme tu le vois, la variable est vide car tu fais le print pendant que tu définis le formulaire, bien avant que l'utilisateur ait entré une valeur dans le champ.
je pense qu'il suffit de déplacer la ligne 39 avant la ligne 12.
0
yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025 1 568
28 déc. 2020 à 15:33
si tu veux faire comme exec en c, tu peux utiliser os.execl, comme expliqué ici.
0
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
28 déc. 2020 à 15:49
Merci yg_be pour ton retour.

Sauf erreur, mais je n'ai qu'un recul de 2 mois en Python, le traitement débute en ligne 25.

Initialisation -> saisie des données (Label + Entry) -> Appel de la procédure Lancement() et la je plante à l'ouverture du fichier car la variable MMAA que je veux concaténer à ma variable i_file est vide .

Logiquement le process continu par appel à la procèdure après saisi par l'utilisateur et validation via un "Button", non ?
0
yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025 1 568
28 déc. 2020 à 16:07
as-tu testé la suggestion?
0
yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025 1 568
28 déc. 2020 à 16:11
tu peux ajouter des print() si tu veux comprendre quand le code est exécuté.
0
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
28 déc. 2020 à 16:30
Mea culpa. J'ai déplacé l'instruction et ça marche.

J'imaginai que le process se bloquait sur l'instruction Entry et se libérait à la saisie du champs et donc alimentait ma variable avec l'instruction qui suivait.

Merci.

Claude
0
yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025 1 568
28 déc. 2020 à 16:31
peux-tu alors marquer la discussion comme résolue?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
28 déc. 2020 à 16:39
Un avis, yg_be sur la 2ème partie de mon post ?
Je vais quand même le passer en "résolu".

Encore merci.
Claude
0
yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025 1 568
28 déc. 2020 à 17:00
as-tu lu le #2?
0
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1 > yg_be Messages postés 23462 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 février 2025
28 déc. 2020 à 18:33
Désolé, je l'avais raté.
Merci je regarde ça.

Claude
0