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

PyQt Python Discussion :

Rouvrir le dernier répertoire ouvert [PyQt5]


Sujet :

PyQt Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Rouvrir le dernier répertoire ouvert [PyQt5]
    Bonjour,

    N'ayant pas trouvé de thread approprié, je me suis mis sur celui-ci.

    Voilà mon problème: je code sous PyQt5 et je dois faire en sorte que lorsqu'un utilisateur utilise un QopenFileDialog, le chemin du dernier fichier utilisé soit sauvegardé.

    Le problème est qu'après quelques semaines de recherches, je ne suis arrivé à rien de concluant (je suis débutant).

    J'ai donc fait en sorte de ne pas utilser le 'dialog natif', car il semblerait que ce soit pour ça qu'on ne puisse pas réussir à enregistrer le chemin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     csv_file_list = QtWidgets.QFileDialog.getOpenFileName(self, 'Open File', '', 'Csv Files (*.csv)', None,  QtWidgets.QFileDialog.DontUseNativeDialog)
    J'ai essayé diverses choses que je vous met ici :

    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
            csv_file_list = QtWidgets.QFileDialog.getSaveFileName(self, 'Dialog Title', '/path/to/default/directory', selectedFilters='*.txt')
            if csv_file_list:
                print (csv_file_list)
     
            theInputDir = ''
     
            if os.path.exists(configFile):
                config = ConfigParser.ConfigParser()
                config.read(configFile)
                if config.has_sections('dirs'):
                    if config.has_option('dirs',  'inputdir'):
                        theInputDir = config.get('dirs',  'inputdir')
            csv_file_list = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file', '', '*.csv')
            if csv_file_list:
                self.lineEditInputFile.setText(csv_file_list)
                inputDirName = os.path.dirname(csv_file_list.ascii())
                self.textEditInfo.append('Inpu Dir : ' + inputDirName)
                #Write the directory to the config file for the next time
                config = ConfigParser.ConfigParser()
                config.read(configFile)
                if not config.has_sections('dirs'):
                    config.add_sections('dirs')
                config.set('dirs',  'inpudir',  inputDirName)
                fpConf = open(configFile,  'w') #configFile is global
                config.write(fpConf)
                fpConf.close()
     
            ##
            save = QtWidgets.QFileDialog.saveState(self)
            QtWidgets.QFileDialog.resaveState(save)
            if self.QFileDialog.restoreState(dir_path) == true:
                csv_file_list = 
     
            ##
            settings = QSettings()
            self.recentFiles = settings.value("RecentFiles").toStringList()
            settings.value("Recent files").toStringList
            size = settings.value("MainWindow/Size",  QSize(800,  600)).toSize()
            self.resize(size)
            self.restoreState(settings.value("MainWindow/State").toByteArray())
            self.setWindowTitle("Mobility Data Display - " + dir_path) 
            self.updateFileMenu()
            QTimer.SingleShot(0,  self.loadInitialFile)
     
            ##
            settings = QSettings(dir_path,  "docs")   
            settings.value("toto")
     
            ##Non native Dialog first attempt
            csv_file_list = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file', '', '*.csv'),None,  QtWidgets.QFileDialog.DontUseNativeDialog)
     
     
            ##Non native Dialog second attempt
            dialog = QtWidgets.QFileDialog(self)
            dialog.setWindowTitle('Open File')
            dialog.setNameFilter('*.csv')
            dialog.setFileMode(QtWidgets.QFileDialog.ExistingFile)
            if dialog.exec_() == QtWidgets.QDialog.Accepted:
                csv_file_list = dialog.selectedFiles()[0]
    Ca fait beaucoup mais je n'ai pas chômé !

    Je pensais aussi stocker le chemin du dernier fichier utilisé dans un .txt et le réutiliser derrière mais je ne sais tout simplement pas comment m'y prendre ...


    Si vous avez une solution ou juste un début je suis preneur !!

    Merci par avance !

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

    oui en effet, votre code est laborieux...
    Simplifions:
    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
    import os
    from PyQt5.QtWidgets import QApplication, QFileDialog
    from PyQt5.QtCore import QSettings
     
    DEFAULT_DIRECTORY = '.'
     
    app = QApplication([])
     
    settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', application='MyApp', )
    cdir = settings.value('current_directory', DEFAULT_DIRECTORY, type=str )
    fullname, _ = QFileDialog.getOpenFileName(None, 'Open File', cdir, 'Csv Files (*.csv)', None,  QFileDialog.DontUseNativeDialog)
    cdir = os.path.split(fullname)[0] or DEFAULT_DIRECTORY
    settings.setValue('current_directory', cdir)
     
    app.exec_()


    Par défaut, le répertoire sera DEFAULT_DIRECTORY ou la valeur qu'on récupère via QSettings dans "cdir".
    Il suffit de passer ce répertoire à QFileDialog.getOpenFileName.
    Et de le sauvegarder pour le coup suivant.

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Merci !
    Salut,

    Merci ! Je vais de ce pas essayer

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Des petites erreurs..
    Re, après plusieurs tests infructeux, j'en viens à penser que je ne vous ai pas tout dis

    C'est une fonction (normal) mais je n'ai pas tout écris, je vous met donc l'ensemble de la fonction (parce que y'a un truc qui foire après)

    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
    def openandPlot(self,  parent):
            # All values should be set before loading a data file. Check if it is the case.
            try: 
                params = self.validate_param()
            except ValueError :
                self.statusbar.showMessage('Invalid value for parameters.')
                raise
            self.statusbar.showMessage('Opening file')
     
            ##I'm trying to save the folder when the user quit the software
     
            DEFAULT_DIRECTORY = '.'         
            settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', application='PickApex3D', )
            cdir = settings.value('current_directory', DEFAULT_DIRECTORY, type=str )
            csv_file_list, _ = QFileDialog.getOpenFileName(None, 'Open File', cdir, 'Csv Files (*.csv)')
            cdir =DEFAULT_DIRECTORY#! os.path.split(csv_file_list)[0] or 
            settings.setValue('current_directory', cdir)
     
            if len(csv_file_list) > 2 :
                # Output a warning that we will not handle more than one file.
                self.statusbar.showMessage('Only opening the first file.')
            csv_file = csv_file_list[0]
     
            #fileName on window title bar
            dir_path = os.path.basename(csv_file)
            self.setWindowTitle("Mobility Data Display - " + dir_path)
     
            if csv_file == '' :
                self.statusbar.showMessage('Ready')
                return True
            self.data = CCS_Data()
            try:
                self.data.read(csv_file)
            except:
                self.statusbar.showMessage('Error reading file: ' + csv_file)
                return True
            try:
                self.data.process(params)
            except KeyError:
                self.statusbar.showMessage('Error processing file: ' + csv_file)
                raise
            if self.data.num_points() == 0:
                self.statusbar.showMessage('No matching data points found in:'
                + csv_file)
                return True         
            self.fig.clear()
            self.plotLayers = [0]
            self.currentSeries = 1
            self.ax  = self.fig.add_subplot(111)
            self.data.plot(self.ax)
            print(locale.getlocale(category=locale.LC_NUMERIC))
            print("3" + locale.localeconv()['decimal_point'])
            self.fig.canvas.mpl_connect('pick_event', self.onpick)
            print(locale.getlocale(category=locale.LC_NUMERIC))
            print("4" + locale.localeconv()['decimal_point'])
            self.canvas.draw()
            print(locale.getlocale(category=locale.LC_NUMERIC))
            print("5" + locale.localeconv()['decimal_point'])
     
            # Make the selectSeries spinBox active and set its initial value as its limits to 
            # sensible values.
            self.selectSeries.setEnabled(True)
            self.selectSeries.setMinimum(1)
            self.selectSeries.setMaximum(1)
            self.selectSeries.setValue(1)
            # Initialize the output values for the series.
            print(locale.getlocale(category=locale.LC_NUMERIC))
            print(locale.localeconv()['decimal_point'])
            self.updateSeriesTable()
    Voilà ! Je pense que c'est plus clair maintenant.
    En fait en ouvrant mon fichier, j'ai une erreur de lecture (que je laisse ou pas le nonNativeDialog !)

    Si vous avez un début de solution, je suis preneur !

    Merci par avance

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

    Citation Envoyé par qrkedrille Voir le message
    Voilà ! Je pense que c'est plus clair maintenant.
    En fait en ouvrant mon fichier, j'ai une erreur de lecture (que je laisse ou pas le nonNativeDialog !)
    Vous avez quoi comme "erreur de lecture"? Soyez plus précis: postez le traceback s'll y en a un...

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

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    En fait, il n'y a pas d'erreurs dans le shell.


    C'est cette partie du code qui génère l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     try:
                self.data.read(csv_file)
            except:
                self.statusbar.showMessage('Error reading file: ' + csv_file)
                return True
    Le message s'affichant est le suivant :
    "Error reading file: C

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par qrkedrille Voir le message
    C'est cette partie du code qui génère l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     try:
                self.data.read(csv_file)
            except:
                self.statusbar.showMessage('Error reading file: ' + csv_file)
                return True
    Le message s'affichant est le suivant :
    "Error reading file: C
    Vous voyez quand vous voulez
    Si vous ne masquiez pas le message d'erreur, probable que çà dirait que le fichier 'C' n'existe pas.
    Ce qui renvoie à la supposition (que vous faites) que getOpenFileName vous retournerait une liste de noms de fichiers.
    Ce qui si on tire la ficelle jusqu'au bout: le mouvement perpétuel existe (elle est un peu longue ma ficelle).

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

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Justement, ce que je ne comprends pas c'est qu'il me dit que le fichier n'existe pas...

    Alors que je n'ouvre pas un fichier appelé "C" mais un fichier nommé :"test 1.csv"

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par qrkedrille Voir le message
    Justement, ce que je ne comprends pas c'est qu'il me dit que le fichier n'existe pas...

    Alors que je n'ouvre pas un fichier appelé "C" mais un fichier nommé :"test 1.csv"
    Ca c'est ce que vous voudriez faire. Manifestement votre code fait autre chose.
    Comme vous n'êtes pas en train de faire l'exo. d'un tuto.: vous devez savoir vérifier que le résultat d'une opération (getOpenFileName) retourne bien ce qu'attend la suite du code (pas compliqué de faire "print" ou de lancer le debugger symbolique).

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

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Eh bien, en fait je suis débutant sur Python.

    J'ai dû comprendre le code source de l'appli et apprendre à utiliser PyQt et QtDesigner.

    Et je me suis occupé de l'openFileDialog.

    Et en relisant cette fonction je n'arrive vraiment pas à cerner l'erreur..

    D'ailleur même en utilisant des print ça ne marche pas :/

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bon j'ai trouvé l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if len(csv_file_list) > 2 :
                # Output a warning that we will not handle more than one file.
                self.statusbar.showMessage('Only opening the first file.')
            #l'erreur est la partie commenté en dessous : "string index out of range (lorsque l'on rajoute [0])
            csv_file = csv_file_list#[0]
    De plus meme en supprimant le "[0]" cela ne sauvegarde pas le chemin.

    En fait je n'ai pas spécialement besoin du code (même si cela m'aiderait), c'est surtout la logique que je n'arrive pas à comprendre.

    EDIT: En fait a sauvegarde le chemin pendant que le soft est ouvert mais quand on le ferme t le réouvre, ca ne suavegarde rien

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par qrkedrille Voir le message
    Bon j'ai trouvé l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if len(csv_file_list) > 2 :
                # Output a warning that we will not handle more than one file.
                self.statusbar.showMessage('Only opening the first file.')
            #l'erreur est la partie commenté en dessous : "string index out of range (lorsque l'on rajoute [0])
            csv_file = csv_file_list#[0]

    Ah ben ouais, c'est pas parce que vous avez décidé d'appeler votre variable csv_file_list que getOpenFileName va retourner une liste de noms de fichiers... Sûr qu'en écrivant csv_file = csv_file_list#[0] çà marchera mieux, mais il serait plus sain de virer "_list" dans le nom de votre variable: dans quelques temps, lorsque vous allez relire votre code vous vous poserez des tas de questions pour rien...

    Citation Envoyé par qrkedrille Voir le message
    De plus meme en supprimant le "[0]" cela ne sauvegarde pas le chemin.

    En fait je n'ai pas spécialement besoin du code (même si cela m'aiderait), c'est surtout la logique que je n'arrive pas à comprendre.

    EDIT: En fait a sauvegarde le chemin pendant que le soft est ouvert mais quand on le ferme t le réouvre, ca ne suavegarde rien
    Reprenez le code que j'ai posté. S'il fonctionne, c'est que vous avez recopié ce qu'il fait sans trop comprendre: cherchez l'erreur...
    Je ne le ferais pas à votre place car, c'est en prenant la mesure du temps que vous perdez faire tomber en marche du code que vous avez écrit sans trop faire attention que vous allez trouver comment vous améliorer.

    Citation Envoyé par qrkedrille Voir le message
    Eh bien, en fait je suis débutant sur Python.
    J'ai dû comprendre le code source de l'appli et apprendre à utiliser PyQt et QtDesigner.
    Et je me suis occupé de l'openFileDialog.
    "débuter" avec Python, c'est commencer par réaliser des codes simples pour comprendre les messages d'erreurs voir comment on peut arriver à les mettre au point. Lorsque vous voulez ajouter une fonctionnalité a un programme, faites un brouillon comme celui que je vous ai donné en exemple: çà permet d'avoir le "focus" sur ce détail plutôt que de se laisser impressionner par le reste. Une fois que vous êtes sur d'avoir à peu près compris comment çà fonctionne, vous pouvez "intégrer" la chose à l'existant. Si çà ne fonctionne plus, vous avez quand même une "baseline" qui va vous permettre de trier/réfléchir à ce qu'il se passe.

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

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bon je vais reprendre pas à pas votre code (reprenez moi si je me gourre ^^)

    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
    DEFAULT_DIRECTORY ="."
    #On crée une variable qui contiendra le repertoire par défaut (/home sous linux)
     
    settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', application='PickApex3D'#y'avais une virgule en trop ici)
    # on crée une clé de registre avec le nom de l'organisation et le nom de l'appli si je me souviens bien
     
    csv_file, _ = QFileDialog.getOpenFileName(None, 'Open File', cdir, 'csv Files (*.csv)')
    #on crée la variable csv_file qui ouvre une boite de dialogue (pour ouvrir un fichier)
    mais par contre je ne vois pas à quoi sert le "_" après "csv_file"
     
    cdir = os.path.split(csv_file)[0] or DEFAULT_DIRECTORY
    #on prend le chemin relatif(?) et on le stock
     
    settings.setValue('current_directory', cdir)
    #et là normalement on utilise un mutateur pour avoir le repertoire actuel !

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DEFAULT_DIRECTORY ="."
    #On crée une variable qui contiendra le repertoire par défaut (/home sous linux)
     
    settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', application='PickApex3D'#y'avais une virgule en trop ici)
    # on crée une clé de registre avec le nom de l'organisation et le nom de l'appli si je me souviens bien
    Avec QSettings.IniFormat, on ne crée pas une clef de registre mais un fichier (la doc... est faite pour être lue...)
    note: et Python s’accommode de cette virgule en trop dans les tuple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    csv_file, _ = QFileDialog.getOpenFileName(None, 'Open File', cdir, 'csv Files (*.csv)')
    #on crée la variable csv_file qui ouvre une boite de dialogue (pour ouvrir un fichier)
    mais par contre je ne vois pas à quoi sert le "_" après "csv_file"
    getOpenFileName retourne un tuple dont seul le premier élément m'intéresse: pas besoin de me fatiguer à donner un nom au second élément. Avec la dernière version de Python, on pourrait écrire çà csv_file, *

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cdir = os.path.split(csv_file)[0] or DEFAULT_DIRECTORY
    #on prend le chemin relatif(?) et on le stock
    Voilà le genre de question ou vous devez avoir le courage de faire "print" pour voir ce qu'il y a dans les variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    settings.setValue('current_directory', cdir)
    #et là normalement on utilise un mutateur pour avoir le repertoire actuel !
    On sauvegarde surtout la valeur courante de "cdir" dans le fichier QSettings.

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

Discussions similaires

  1. [JFileChooser] Se rappeler du dernier dossier ouvert
    Par bellemlih dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 31/03/2008, 19h45
  2. Réponses: 23
    Dernier message: 25/04/2007, 16h36
  3. [VB]récupérer le dernier chemin ouvert avec commondialog
    Par bhaal76 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 14/02/2006, 16h50

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