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 :

une fenêtre tk ouverte par filedialog.askopenfilename qui ne se ferme plus automatiqument [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut une fenêtre tk ouverte par filedialog.askopenfilename qui ne se ferme plus automatiqument
    Bonjour à tous
    j'utilise filedialog.askopenfilename pour récupérer le chemin complet d'un fichier.
    J'ai 2 fenêtres qui s'ouvrent une fenêtre 'mère': tk et la boite de dialogue proprement dite
    et tout cela se referme dès la selection du fichier est validée.

    Mais il se trouve que dans la suite de mon code j'ouvre moi-même une fenêtre principale tk
    fen = Tk()
    fen.mainloop()

    et dès que je rajoute ces 2 lignes, à l'execution, la première fenêtre tk ne se ferme plus automatiquement
    j'ai 2 fenêtres tk et tk#2, je ne sais pas forcer la fermeture de la première
    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
     
    from tkinter import filedialog
    from tkinter import *
    import platform as plf
    from os import getcwd
     
     
     
    def initialisation():
        """
        renvoie un t-uple (nom_sys, sep, chemin)
        nom_sys: Linux ou Windows
        sep  = / si  nom_sys est Linux \\ si nom_sys est Windows
        chemin
        
        """
     
        nom_sys = plf.system()
        print("On tourne sous un syteme: {}, version: {}".format(nom_sys, plf.version()))
        print("avec Python: {}".format(plf.python_version()))
        rep_cour = getcwd()
        print("le répertoire courant est: {}".format(getcwd()))
        if 'Linux' in nom_sys:
            sep = '/'
            chemin = '/home'
        else:
            sep = '\\'
            chemin= 'C:\\'
     
     
        return (nom_sys, sep, chemin)
     
    def nomFic(chemin, titre):
        """
        retourne le nom complet du fichier
        """
        typefic = [("fichiers quelconcques", "*.*")]
        nom_fic = filedialog.askopenfilename(initialdir = chemin , title = titre, filetypes = typefic)
        return nom_fic
     
     
     
    if __name__ == '__main__':
        ini = initialisation()
        nf = nomFic(ini[2], 'selectionnez un fichier')
     
        print(nf)
        fen = Tk()
        fen.mainloop()

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Ce qu'il faut comprendre est que si on crée un widget tkinter sans avoir créé de fenêtre root (tk.Tk), il la crée automatiquement, cela est valable pour les filedialog, logique, on n'aménage pas sa maison avant qu'elle soit construite

    Donc il va falloir faire avec et repenser ton script et l'interface de ton application, il n'y a pas réellement d'intérêt à déclarer plusieurs fenêtres maîtresses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut
    Bonjour
    Tour d'abord merci de m'avoir répondu
    Citation Envoyé par bistouille Voir le message
    il n'y a pas réellement d'intérêt à déclarer plusieurs fenêtres maîtresses.
    Oui le problème vient de là.
    la fenêtre mère de filedialog c'est tkinter qui se la crée tout seul, sauf apparemment si une fenêtre mère existe déjà.
    je pense avoir résolu le problème
    en créant en premier ma fenêtre mère
    et en utilisant filedialog seulement apres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] [0.9.29] Savoir si une fenêtre est ouverte par ShowModal ou pas
    Par Invité dans le forum Lazarus
    Réponses: 1
    Dernier message: 12/10/2010, 11h13
  2. détecter si une fenètre est ouverte et si oui la fermer
    Par malabarbe dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 29/02/2008, 11h36
  3. Réponses: 3
    Dernier message: 18/09/2007, 14h54
  4. Savoir si une fenêtre est ouverte ou pas
    Par zizoux5 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2007, 18h26
  5. Réponses: 2
    Dernier message: 16/03/2007, 09h13

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