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 :

Ajouter un export ou une impression a ma fenetre


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut Ajouter un export ou une impression a ma fenetre
    Bonjour a tous,

    j'ai mis au point un script qui me permet de rechercher un mot dans un fichier ou un dossier nommé et dont le resultat est sortie sur une fenetre texte.

    Je chercherais a pouvoir exporter cette fenetre dans un fichier texte ou/et encore donner la possibilité de l'imprimer.

    Pouvez vous m'aider svp ?

    voici le script :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    from Tkinter import *
    import tkFileDialog
    import os
    from ScrolledText import *
     
    def parcourir():
        global nom
        nom1 = tkFileDialog.askdirectory(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ')
        nom=nom1.replace('/','\\')
        fen1.bind('<Return>', lire)  
     
    def lire():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " >rep.txt"
        commande="find /I /N \""+ fichier +"\" \""+ nom+"\\*.*\" "+che
        #print commande
        a=os.system(commande)
        ent1.delete(0,END)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open("rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        os.system("del /Q rep.txt")
        texte.pack()
        bou1.pack()
     
     
    def parcourir1():
        global nom
        nom = tkFileDialog.askopenfilename(parent=fen1,initialdir=os.getcwd(),title='Choisissez le fichier ') 
        fen1.bind('<Return>', lire1)
     
    def lire1():
     
        def RetourFen1():
            fen1.deiconify()
            fen2.destroy()
     
        fichier=ent1.get()
        fen2=Tk()
        fen2.title('Search Word. -V1.0 par S.Pillot')
        fen1.withdraw()
        che= " >rep.txt"
        commande="find /I /N \""+ fichier +"\" \""+ nom+"\" "+che
        a=os.system(commande)
        ent1.delete(0,END)
        texte = ScrolledText(fen2, width = 75, height = 35, font = "Arial 10", relief = "groove")
        bou1=Button(fen2, text='Quitter',command=RetourFen1)
        b=open("rep.txt","r")
        for elem in b.readlines():
            texte.insert(END, elem)
        b.close()
        os.system("del /Q rep.txt")
        texte.pack()
        bou1.pack()
     
    fen1=Tk()
    fen1.title('Search Word. -V1.0')
    text1=Label(fen1, text='Entrer le mot recherché', fg='red')
    text1.grid(column = 0,row=0)
    ent1=Entry(fen1)
    ent1.grid(column=1,row=0)
    text2=Button(fen1, text='Choisisser le dossier', command=parcourir)
    text2.grid(column=2,row=1)
    text3=Button(fen1, text='Choisisser le fichier ', command=parcourir1)
    text3.grid(column=2,row=0)
    bou2=Button(fen1,text='Lecture Dossier',command=lire)
    bou2.grid(column=3,row=1 )
    bou3=Button(fen1,text='Lecture Fichier ',command=lire1)
    bou3.grid(column=3,row=0 )
    bou1=Button(fen1, text='Quitter',command=fen1.destroy)
    bou1.grid(column=0,row=5)
     
    fen1.mainloop()
    Merci d'avance pour votre aide
    Amicalement

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Puisque vous utilisez Python 2.x sous Windows vous pouvez utiliser ImageGrab.grab de PIL pour créer une image de votre fenêtre.
    Pour le cadrage utilisez la géométrie de votre root Tk()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> root = Tk.Tk()
    >>> root.geometry()
    '200x200+4+72'
    @+

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Euh... C'est moi où je vois dans ton code 2 fonctions parcourir et lire qui sont identiques aux fonctions parcourir1 et lire1?


  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Ça ce n'est rien à coter des trois instances Tk().

    Pour ce qui est de l'impression cela passe par win32.
    Vous trouverez du code sur le forum, voir le Web.

    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut
    c'est fort probable Fred1599, car je ne suis qu'un débutant amateur. Mais ayant une fois une recherche dans un fichier et une autre fois dans un dossier, j'ai effectivement deux fonctions identiques.

    PauseKawa, je comprend bien l'idée mais cela va me faire une image pas un export que je puisse modifier ou traiter ?

    En tout cas merci a tous pour l'aide que vous m'apportez

    Amicalement

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    c'est fort probable Fred1599, car je ne suis qu'un débutant amateur. Mais ayant une fois une recherche dans un fichier et une autre fois dans un dossier, j'ai effectivement deux fonctions identiques.
    Je pense que vous devriez revoir l'intérêt d'une fonction. Vous avez possibilité de savoir si votre argument est un répertoire ou un fichier à l'aide des méthodes os.path.isfile et os.path.isdir

    Ça ce n'est rien à coter des trois instances Tk().
    Oui

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    A vrais dire ce qui vous importe c'est le résultat.
    Pour cela vous n'avez qu'a utiliser open pour écrire dans un fichier texte ou win32print si vous voulez imprimer directement le résultat.

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Un petit conseil tout de même pour ne pas vous laissez dans cette difficulté où vous aurez du mal à vous en sortir, pensez à découper en fonction la recherche de mot dans un fichier et la recherche de mot dans un répertoire.

    Ensuite vous pourrez reconnaître si votre path est un fichier ou un répertoire, puis lancer la fonction de recherche qui convient.

    La fonction de recherche pourrait ressembler à cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def recherche(path, mot):
        if os.path.isfile(path):
            return recherche_files(path, mot)
        elif os.path.isdir(path):
            return recherche_rep(path, mot)
        else:
            raise IOError("Entrer un chemin correct") # juste pour prévoir une mauvaise entrée
    Edit : ça peut être un bon exercice, profitez-en pour faire cela sérieusement, c'est la difficulté majeure de pouvoir découper correctement son code en fonctions, c'est plus lisible et plus maintenable.

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bon, puisque on en est aux conseils annexes voici pour la partie Tk:
    N'utilisez pas plusieurs instances Tk(). Pour les autres fenêtres utilisez Toplevel().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fen2 = Toplevel(master=fen1)
    N'utilisez pas fen1.destroy mais fen1.quit. J'en parle encore dernièrement ici (vous noterez au passage le post sur l'import, une bonne habitude a prendre).
    Mais bon : Vous avez déjà pas mal à faire avec win32print pour le moment

    @+ et bon code

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

Discussions similaires

  1. [GD] ajouter un texte sur une image uniquement à l'impression signature numérique
    Par DrHelmut dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/10/2006, 16h13
  2. Réponses: 14
    Dernier message: 28/08/2003, 23h29
  3. [VB6] Ajouter un commentaire à une fonction d'une DLL
    Par Ace303 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/06/2003, 08h14
  4. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57
  5. Réponses: 12
    Dernier message: 26/02/2003, 08h14

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