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 :

Appeler n'importe quel fichier de type .txt ou .wav


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Appeler n'importe quel fichier de type .txt ou .wav
    Bonjour,

    J'essaie de faire un programme qui permet d'ouvrir un fichier de type .wav ou .txt, mais je rencontre un problème.

    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
        from tkinter import Button
        from tkinter import Label
        from tkinter import StringVar
        from tkinter import Tk
        from tkinter.filedialog import askopenfilename
     
     
     
     
    FILETYPES = [ ("text files", "*.txt") ]
     
     
    root = Tk()
     
    filename = StringVar(root)
     
    label = Label(root, textvariable=filename)
    label.pack()
     
    button = Button( root,
                     text='Open',
                     lambda: filename.set(askopenfilename(filetypes=FILETYPES)) )
    button.pack()
     
     
     
     
     
    root.mainloop()

    Un problème de syntaxe avec FILETYPES, avec python v2, le programme fonctionne, mais pas avec python v3.
    Or je compte implémenter ce code dans mon programme qui est en v3.

    Quelqu'un aurait il une piste ? Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Akeran Voir le message
    Un problème de syntaxe avec FILETYPES, avec python v2, le programme fonctionne, mais pas avec python v3.
    Or je compte implémenter ce code dans mon programme qui est en v3.
    Il n'y a pas de trace de .wav dans filetypes. En l'état, vous n'essayez même pas de le faire marcher.
    Pas de différences entre V2 et V3 sinon côté import: vous pouvez lire le petit tuto. sur effbot et commencé par essayer de l'appliquer.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Oui en effet je n'ai pour l'instant que mis pour ".txt" pour faire un essai.

    Je ne comprends pas s'il n'y a pas de différence entre v2 et v3, pourquoi cela marche pour l'un et non pour l'autre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from tkinter.filedialog import askopenfilename
    Apparemment j'ai mis le bon import. Et à part ça je ne vois pas où serait le problème.

    J'ai regardé l'exemple mais il utilise des classes, et je ne cherche pas ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    options['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
    Donc, j'ai modifié mon code mais j'obtiens une autre erreur

    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
    from tkinter import Button
    from tkinter import Label
    from tkinter import StringVar
    from tkinter import Tk
    from tkinter.filedialog import askopenfilename
     
     
    root = Tk()
     
    filename = StringVar(root)
     
    label = Label(root, textvariable=filename)
    label.pack()
     
    button = Button( root,
                     text='Open',
                     lambda: filename.set(askopenfilename(filetypes="text files",".txt")) )
    button.pack()
     
     
    root.mainloop()
    Problème de syntaxe avec "lambda: filename", positionnal argument follows keyword argument.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Akeran Voir le message
    Je ne comprends pas s'il n'y a pas de différence entre v2 et v3, pourquoi cela marche pour l'un et non pour l'autre ?
    Pour l'instant vous montrez du code qui ne fonctionne ni en V2 ni en V3. Essayez avec Python2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> import Tkinter as tk
    >>> from tkFileDialog import askopenfilename
    >>> root = tk.Tk()
    >>> v = tk.StringVar()
    >>> tk.Button(lambda: v.set(askopenfilename(filetypes="text files",".txt")) )
      File "<stdin>", line 1
    SyntaxError: non-keyword arg after keyword arg
    >>>

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Ah oui du coup, je tiens juste à préciser que mon code était à la base pour python 2.

    Du coup, je mets le code de départ (j'aurais dû commencer par là...) :

    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
    #!/usr/bin/env python3 -i
     
    try:
        # Python 3
        from tkinter import Button
        from tkinter import Label
        from tkinter import StringVar
        from tkinter import Tk
        from tkinter.filedialog import askopenfilename
     
    except ImportError:
        # Python 2
        from Tkinter import Button
        from Tkinter import Label
        from Tkinter import StringVar
        from Tkinter import Tk
        from tkFileDialog import askopenfilename
     
     
    FILETYPES = [ ("text files", "*.txt") ]
     
     
    root = Tk()
     
    filename = StringVar(root)
     
    label = Label(root, textvariable=filename)
    label.pack()
     
    # button = Button( root,
    #                  text='Open',
    #                  lambda: filename.set(askopenfilename(filetypes=FILETYPES)) )
    # button.pack()
     
    # Ou alors :
     
    def set_filename():
        filename.set(askopenfilename(filetypes=FILETYPES))
     
    button = Button(root, text='Open', command=set_filename)
    button.pack()
     
    root.mainloop()
    Celui la marche au départ.
    Du coup je me suis dis, en enlevant la partie python 2, et en remplaçant par python 3, qu'il y aurait pas de problème... mais non.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Akeran Voir le message
    Du coup je me suis dis, en enlevant la partie python 2, et en remplaçant par python 3, qu'il y aurait pas de problème... mais non.
    Ce code fonctionne correctement sous Python2 et sous Python3... mais ne permet pas d'ouvrir un fichier de type .wav ou .txt. Pour çà il suffit de modifier (proprement) la variable FILETYPES en suivant la syntaxe du tutoriel que je vous ai déjà indiqué.

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

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    D'accord merci, mais est-ce que ce serait possible de faire en sorte qu'il soit lu uniquement sous python 3 ?

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Akeran Voir le message
    D'accord merci, mais est-ce que ce serait possible de faire en sorte qu'il soit lu uniquement sous python 3 ?
    Ah ben le code de votre premier post n'est pas loin du but mais si c'est la première fois que vous vous amusez à modifier un programme Python, c'est pas facile.
    Mais, si vous ne prenez pas la peine d'ouvrir un tuto et regardez à quoi ça ressemble, je ne peux rien pour vous.

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

Discussions similaires

  1. Importer fichier .fpi (type txt)
    Par Baelros dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/03/2008, 13h44
  2. Convertir n'importe quel fichier to Xml.
    Par thierryakaguy dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 01/10/2007, 21h29
  3. Réponses: 2
    Dernier message: 12/06/2007, 14h31
  4. vb6: Mettre les données d'un textbox sous un fichier de type txt
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 12h01
  5. Réponses: 1
    Dernier message: 17/05/2006, 21h03

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