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

wxPython Discussion :

Utilisation d'un wx.FileDialog


Sujet :

wxPython

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Utilisation d'un wx.FileDialog
    Bonjour,

    J'ai la fonction suivant qui me permets de créer un wx.FileDialog permettant à l'utilisateur de mon logiciel de sélectionner le répertoire d'enregistrement d'un fichier et son nom.

    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
    def save_dire(self, ref, data, module):
        def select_chemin():
    	#self.maj_data()
    	filename = 'Rapport: %s'%ref
    	print filename  ## Juste pour l'info lors du dev.
    	wildcard = "Fichier tartanpion (*.tartanpion)|*.tartanpion"
    	selection = wx.FileDialog(self.frame, 'Enregistrer sous',
    	                          defaultFile = filename,  wildcard = wildcard,
    	                            style = wx.SAVE)
    	retour = selection.ShowModal()
    	chemin = selection.GetPath()
    	if os.path.isfile(chemin) == 1:
    	    dlg = wx.MessageDialog(self, u'Ce projet existe d\xe9\xe0. Voulez-vous le remplacer?',
    	                           'ATTENTION', wx.OK | wx.ICON_WARNING |wx.CANCEL)
     
    	    if dlg.ShowModal() == wx.ID_OK:
    		return chemin
    	    else:select_chemin()
    	else: return chemin
     
        path = select_chemin()
    Le souci c'est que dans la fenêtre "Enregistrer sous" le filename choisi n'apparait pas (il est vide).

    Quelqu'un a-t-il une idée car là je vois pas ce qui bloque.

    D'avance merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour Jiyuu,

    Chez moi ton code fonctionne...
    Du moins un simple copier/coller

    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
    import os
    import wx
     
    MAIN_WINDOW_DEFAULT_SIZE = (300,200)
     
    class Frame(wx.Frame):
     
        def __init__(self, parent, id, title):
            style=wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER)   
            wx.Frame.__init__(self, parent, id, title=title, size=MAIN_WINDOW_DEFAULT_SIZE, style=style)
            self.Center()
            self.panel = wx.Panel(self)
            self.panel.SetBackgroundColour('White')
            self.save_dire(1, 2, 3)
     
        def OnExit(self, event):
            self.Destroy()
     
        def save_dire(self, ref, data, module):
            def select_chemin():
    	    #self.maj_data()
    	    filename = 'Rapport: %s'%ref
    	    print filename  ## Juste pour l'info lors du dev.
    	    wildcard = "Fichier tartanpion (*.tartanpion)|*.tartanpion"
    	    selection = wx.FileDialog(self, 'Enregistrer sous', defaultFile = filename,  wildcard = wildcard, style = wx.SAVE)
                retour = selection.ShowModal()
                chemin = selection.GetPath()
                if os.path.isfile(chemin) == 1:
    	        dlg = wx.MessageDialog(self, u'Ce projet existe d\xe9\xe0. Voulez-vous le remplacer?', 'ATTENTION', wx.OK | wx.ICON_WARNING |wx.CANCEL)
    	        if dlg.ShowModal() == wx.ID_OK:
    		    return chemin
    	        else:select_chemin()
    	    else: return chemin
     
            path = select_chemin()
     
     
    class App(wx.App):
     
        def OnInit(self):
            self.frame = Frame(parent=None, id=-1, title='test wx')
            self.frame.Show()
            self.SetTopWindow(self.frame)
            return True
     
    if __name__ == "__main__":       
        app = App(redirect=False)       
        app.MainLoop()
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonjour Jiyuu,

    Chez moi ton code fonctionne...
    Du moins un simple copier/coller

    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
    import os
    import wx
     
    MAIN_WINDOW_DEFAULT_SIZE = (300,200)
     
    class Frame(wx.Frame):
     
        def __init__(self, parent, id, title):
            style=wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER)   
            wx.Frame.__init__(self, parent, id, title=title, size=MAIN_WINDOW_DEFAULT_SIZE, style=style)
            self.Center()
            self.panel = wx.Panel(self)
            self.panel.SetBackgroundColour('White')
            self.save_dire(1, 2, 3)
     
        def OnExit(self, event):
            self.Destroy()
     
        def save_dire(self, ref, data, module):
            def select_chemin():
    	    #self.maj_data()
    	    filename = 'Rapport: %s'%ref
    	    print filename  ## Juste pour l'info lors du dev.
    	    wildcard = "Fichier tartanpion (*.tartanpion)|*.tartanpion"
    	    selection = wx.FileDialog(self, 'Enregistrer sous', defaultFile = filename,  wildcard = wildcard, style = wx.SAVE)
                retour = selection.ShowModal()
                chemin = selection.GetPath()
                if os.path.isfile(chemin) == 1:
    	        dlg = wx.MessageDialog(self, u'Ce projet existe d\xe9\xe0. Voulez-vous le remplacer?', 'ATTENTION', wx.OK | wx.ICON_WARNING |wx.CANCEL)
    	        if dlg.ShowModal() == wx.ID_OK:
    		    return chemin
    	        else:select_chemin()
    	    else: return chemin
     
            path = select_chemin()
     
     
    class App(wx.App):
     
        def OnInit(self):
            self.frame = Frame(parent=None, id=-1, title='test wx')
            self.frame.Show()
            self.SetTopWindow(self.frame)
            return True
     
    if __name__ == "__main__":       
        app = App(redirect=False)       
        app.MainLoop()
    La fenêtre apparait bien chez moi aussi. Pas de souci de ce coté. Mais peux tu me confirmer que dans la case "Nom du fichier" apparait bien la valeur de la variable filename. Car chez moi ceci n'est pas le cas.

    D'avance merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 92
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    La ligne suivante :

    filename = 'Rapport: %s'%ref

    ...pose comme un petit problème : en effet, elle comprend un ":", qui ne peut être utilisé dans un nom de dossier ou de fichier !

    si tu remplaces par :

    filename = 'Rapport %s'%ref

    ...ben ça va marcher beaucoup mieux...

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Shadok Voir le message
    Bonjour,

    La ligne suivante :

    filename = 'Rapport: %s'%ref

    ...pose comme un petit problème : en effet, elle comprend un ":", qui ne peut être utilisé dans un nom de dossier ou de fichier !

    si tu remplaces par :

    filename = 'Rapport %s'%ref

    ...ben ça va marcher beaucoup mieux...
    Bien joué. Je n'avais pas du tout fait gaffe à ça.

    Merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Et sous Linux j'avais bien Rapport :1
    Merci d'utiliser le forum pour les questions techniques.

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 92
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Citation Envoyé par PauseKawa Voir le message
    Et sous Linux j'avais bien Rapport :1
    C'est juste, j'aurais du préciser que l'interdiction du ":" concernait Windows - j'étais au taf sous XP quand j'ai testé le code de Jiyuu. Ce matin je suis chez moi sous Linux Mandriva et le filename accepte en effet ce caractère.

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

Discussions similaires

  1. [AC-2002] Utilisation de FileDialog
    Par Assyris dans le forum VBA Access
    Réponses: 6
    Dernier message: 21/07/2009, 13h53
  2. [VBA/Excel] Utilisation de FileDialog(msoFileDialogSaveAs)
    Par daniel_gre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2008, 11h41
  3. Utilisation de FileDialog
    Par papier dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/11/2006, 15h24
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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