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

Python Discussion :

checkbutton interface graphique


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Par défaut checkbutton interface graphique
    Bonjour,
    Je souhaite créer une interface graphique qui afficherait des données sauvegardées sur un fichier .txt
    Le problème est que le nombre de dossier est inconnu, je dois donc faire tout ça en dynamique. J'ai réussi à créer le nombre de checkbutton en fonction du nombre de dossiers présents mais quand je lance l'appelle pour sélectionner un fichier j'ai un problème par rapport à la variable du bouton. Cela ne fonctionne que si je mets une boucle for pour checker les états de chaque bouton, mais dans ce cas je relance à chaque fois tout le système quand plusieurs boutons sont activés.

    Comment puis-je faire pour que le programme ne considère que le boutons qui a été enclenché en dernier tout en conservant les données récupérées du premier appuis?
    Merci de votre aide!
    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
    import numpy as np
    import matplotlib.pyplot as plt
    from tkinter import *
    from tkinter.messagebox import *
    from tkinter.filedialog import *
    import os
    import glob
    from os import path
    test = os.listdir("Data2")
    print(test)
     
    root = Tk()
    root.title("Post-processing")
    root.geometry("1300x900")
     
    def testfile():
     
        global filename
        if valeur[i].get() ==1:
            filename = askopenfilename(initialdir = path.join("Data2",test[i],"METADATA"),title="Ouvrir votre document",filetypes=[('txt files','.txt')])
            Label(root, text = filename).pack()
     
    valeur = [IntVar(master = root) for i in range(len(test))]
    for i in range(len(test)):
        Checkbutton(root, text = test[i], variable = valeur[i], onvalue = 1, offvalue = 0, command = testfile).pack(side=LEFT)
     
     
     
     
    root.mainloop()

  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 alizeL Voir le message
    Comment puis-je faire pour que le programme ne considère que le boutons qui a été enclenché en dernier tout en conservant les données récupérées du premier appuis?
    Vous ne pouvez pas! Par construction la commande associée sera appelée chaque fois qu'un des Button change d'état.
    Ceci dit, comment définissez vous "le bouton enclenché en dernier".
    Il faut passer à autre chose comme pourrait le signaler un Button "Valider" et c'est dans le callback appelé par cet évènement là qu'on peut s'amuser à regarder ce qui a été sélectionné (en une seule fois).

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

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Ceci dit, comment définissez vous "le bouton enclenché en dernier".

    - W
    En fait ce que je voudrais faire c'est créer une interface avec des radiobutton représentant les dossiers possibles pour un postprocessing.
    Ensuite, c'est à l'utilisateur de choisir lesquels des dossiers il veut traiter. (Avec un choix possible par dossier).
    Il peut en choisir un, deux ou tous s'il veut. c'est pour ça que dans mon idée, à chaque bouton enclenché, l'utilisateur doit choisir un fichier. Et c'est après qu'il appuie sur le bouton valider pour afficher toutes les datas sélectionnées.

    D'après ce que vous me dites, c'est impossible. Mais comment faire pour choisir les fichiers un par un en ouvrant le dossier correspondant au bouton sélectionné?

  4. #4
    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
    Citation Envoyé par alizeL Voir le message
    D'après ce que vous me dites, c'est impossible.
    Je ne dis pas que c'est impossible, je dis seulement que l'action choix des fichiers doit avoir un début et une fin pour qu'on puisse agir sur l'ensemble des fichiers sélectionnées. Dans le cas contraire, si on agit sur les fichiers un à un, çà veut dire que l'opération peut être réversible (car l'utilisateur peut changer d'avis... sauf à supprimer le Button...)

    Citation Envoyé par alizeL Voir le message
    Mais comment faire pour choisir les fichiers un par un en ouvrant le dossier correspondant au bouton sélectionné?
    On peut passer le nom du fichier en paramètre du callback en utilisant une mécanique appelée closure.

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

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    On peut passer le nom du fichier en paramètre du callback en utilisant une mécanique appelée closure.

    - W
    Bonjour,
    J'ai fait la clouer sur mon code de base et ça fonctionne parfaitement.
    Merci beaucoup!

Discussions similaires

  1. CheckButton, ComboBox dans une interface graphique Python
    Par noramokh dans le forum Général Python
    Réponses: 9
    Dernier message: 14/04/2014, 12h58
  2. Réponses: 2
    Dernier message: 29/03/2004, 18h29
  3. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 31/01/2004, 18h55
  4. [Kylix] Interface graphique pour lognes de commande linux
    Par lecharcutierdelinux dans le forum EDI
    Réponses: 6
    Dernier message: 29/08/2003, 10h20
  5. plugin interface graphique
    Par jocelyn dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 13/08/2003, 09h49

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