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

Tkinter Python Discussion :

Effacer et referncer toutes les cases d'une grilles GRID


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur bureau d'étude
    Inscrit en
    Août 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur bureau d'étude
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2018
    Messages : 1
    Par défaut Effacer et referncer toutes les cases d'une grilles GRID
    Bonjour,
    Voilà comme beaucoup je débute dans Python et Tkinter, après avoir suivi plusieurs tutos et m’aidant de plusieurs sites web plutôt bien foutu, j’ai pu mener à bien mon petit programme. Hors pour qu’il soit plus «*souple*» je galère depuis quelques jours sur la problématique suivante:

    Pour faire simple l'idée de ce programme est le suivant*:
    → je fais remplir à l'utilisateur une case indiquant le nombre de transports quil a effectué, puis il fait apparaître en appuyant sur un bouton un tableau à remplir dont le nombre de ligne dépend du nombre de transports entré préalablement*;
    → il remplit le tableau, puis lance le bouton calcul qui affiche la durée de son trajet.
    Rien de très compliqué.

    Voici le programme (qui chez moi fonctionne).

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    from Tkinter import * 
    fenetre = Tk()
     
    """DEBUT fonction affichage du tableau pour y entrer les vitesses et distances en fonction du nombre de transport"""
    def affichage():
    	"""DEBUT Fonction calculer calcul et affichage du temps de trajet"""
    	def Calculer():
    		k=0
    		som=0
    		while k<a:
    			v=float(value_vitesse[k].get())
    			d=float(value_distance[k].get())			
    			som=d/v+som
    			k=k+1
    		label_nbtrans = Label(fenetre, text="La durée du trajet est de :"+str(som)+" h")
    		label_nbtrans.grid(row=a+5, column=1)
     
    	"""FIN fonction calculer"""	
    	k=0
    	a = int(value_nbtrans.get())
    	value_distance=[0]*a
    	value_vitesse=[0]*a	
    	while k<a:
    		value_distance[k] = StringVar() 
    		value_distance[k].set("1")
    		entree_distance = Entry(fenetre, textvariable=value_distance[k], width=30)
    		entree_distance.grid(row=3+k, column=1)
    		value_vitesse[k] = StringVar() 
    		value_vitesse[k].set("1")
    		entree_vitesse = Entry(fenetre, textvariable=value_vitesse[k], width=30)
    		entree_vitesse.grid(row=3+k, column=2)
    		k=k+1
    		b2 = Button(text='Calculer', command=Calculer)
    		b2.grid(row=a+4, column=1)
    """FIN fonction affichage"""
     
    #nombre_de_transports
    label_nbtrans = Label(fenetre, text="Nombre de transports utilisés")
    label_nbtrans.grid(row=1, column=1)
    value_nbtrans = StringVar() 
    entree_nbvoies = Entry(fenetre, textvariable=value_nbtrans, width=30)
    entree_nbvoies.grid(row=1, column=2)
    b1 = Button(text='Afficher le tableau', command=affichage)
    b1.grid(row=1, column=3)
     
    #nom_des_colones
    label_distance = Label(fenetre, text="Distance km")
    label_distance.grid(row=2, column=1)
    label_vitesse = Label(fenetre, text="Vitesse km/h")
    label_vitesse.grid(row=2, column=2)
     
     
    fenetre.mainloop()



    Le programme fonctionne mais ma problématique est la suivante*:
    - j'entre une donnée pour le nombre de transports puis je la modifie, ça se cumule visuellement et c'est pas beau....

    Donc lorsque je relance l’affichage du tableau je veux RAZ ce qu’il y avait avant.
    Hors avec ma méthode je ne vois pas comment faire, en effet si j’utilise la fonction destroy qui semble parfaitement indiqué (à mon avis du moins) sur des éléments comme entree_distance ou entree_vitesse ça n’efface que la dernière ligne (à la vue du programme c’est assez logique comme comportement, puisque lors de l'itération toutes les lignes se sont appelées tour à tour par ces noms).

    En plus des solutions que vous allez m'apporter (en tout cas je l’espères), pouvez vous me dire si ce qui suit est réalisable*:
    1/est il possible d’avoir un élément variable dans la définition d’un Entry comme j’ai pu faire pour les value, imaginons entree_vitesse[k] (qui j'ai essayé ne semble pas fonctionné),
    2/ est il possible au lieu d'entrer un élément comme entree_vitesse ou entree_distance comme cible de destroy d'y entrer les coordonnées de case du tableau "grid"?


    En espérant avoir été clair et en étant très impatient de vous lire et d'en apprendre plus*!! Merci par avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par Baptiste_DLR Voir le message
    Donc lorsque je relance l’affichage du tableau je veux RAZ ce qu’il y avait avant.
    Hors avec ma méthode je ne vois pas comment faire, en effet si j’utilise la fonction destroy qui semble parfaitement indiqué (à mon avis du moins) sur des éléments comme entree_distance ou entree_vitesse ça n’efface que la dernière ligne (à la vue du programme c’est assez logique comme comportement, puisque lors de l'itération toutes les lignes se sont appelées tour à tour par ces noms).
    Si vous créez une collection d'objets que vous voulez détruire plus tard, il faut penser aux structures de bases que sont listes et dictionnaires. Vous y stockez les objets créés et pour les détruire il suffit de boucler sur les éléments de la collection.
    Après vous pouvez faire çà "à la mode TCL/TK", i.e. créer vos objets dans une Frame (qui devient la collection) et détruire la Frame (qui détruira aussi les objets qu'elle contient).
    Vous avez aussi le pendant "tkinter" qui ajoute chaque widget crée dans le dictionnaire children du parent (ce qui vous évite de créer votre propre collection).

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

Discussions similaires

  1. [LibreOffice][Base de données] Formulaire : provoquer une auto sélection de toute la case d'une grille
    Par Bwana dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 25/04/2018, 14h40
  2. Comment définir les cases d'une grille Tkinter?
    Par rom29 dans le forum Tkinter
    Réponses: 3
    Dernier message: 14/05/2015, 19h19
  3. montrer que toutes les cases d'une colonne <0
    Par isidore dans le forum C
    Réponses: 2
    Dernier message: 19/11/2006, 19h52
  4. Réponses: 2
    Dernier message: 11/10/2005, 09h15
  5. Pb effacer toutes les tables d'une bd access
    Par madiam2004 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/05/2004, 15h24

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