Vous êtes à peu près ici : Accueil  »   tutoriel PyGTK  »   PyGTK : sommaire

9.14. Le sélecteur de fichier

Le sélecteur de fichier est un moyen simple et rapide d'afficher une boite de dialogue de fichier déjà équipée des boutons Valider, Annuler, et Aide. Une bonne économie en temps de programmation !

Pour créer une nouvelle boite de sélection de fichier, on utilise :

  selectfichier = gtk.FileSelection(title=None)

Pour définir le nom du fichier, par exemple pour joindre directement un dossier spécifique ou donner un nom de fichier par défaut, on utilise la méthode :

  selectfichier.set_filename(filename)

... où filename est le nom du fichier. Pour récupérer, sous forme de texte, le nom du fichier que l'utilisateur a saisi ou cliqué, on fait appel à la méthode suivante :

  nomfichier = selectfichier.get_filename()

Il existe aussi des références aux widgets contenus dans le sélecteur de fichier. Ce sont tous des attributs de selectfichier :

  selectfichier.dir_list                 # (liste des dossiers)
  selectfichier.file_list                # (liste des fichiers)
  selectfichier.selection_entry          # (champ de saisie "Sélection")
  selectfichier.selection_text           # (texte "Sélection")
  selectfichier.main_vbox                # (boite verticale principale)
  selectfichier.ok_button                # (bouton Valider)
  selectfichier.cancel_button            # (bouton Annuler)
  selectfichier.help_button              # (bouton Aide)
  selectfichier.history_pulldown         # (menu historique déroulant)
  selectfichier.history_menu	         #
  selectfichier.fileop_dialog            # (boutons d'opération sur fichier : boite de dialogue)
  selectfichier.fileop_entry             # (boutons d'opération sur fichier : champ de saisie)
  selectfichier.fileop_file              # (boutons d'opération sur fichier : fichier)
  selectfichier.fileop_c_dir             # (boutons d'opération sur fichier : bouton "Créer un dossier")
  selectfichier.fileop_del_file          # (boutons d'opération sur fichier : bouton "Supprimer le fichier")
  selectfichier.fileop_ren_file          # (boutons d'opération sur fichier : bouton "Renommer le fichier")
  selectfichier.button_area              # (zone des boutons d'opération sur fichier)
  selectfichier.action_area              #

On utilisera le plus souvent les attributs ok_button, cancel_button, et help_button afin de connecter les signaux de leur widget à des fonctions de rappel.

Le programme selectfichier.py donne un exemple d'utilisation du widget de sélection de fichier. Notez que, bien que le bouton Aide apparaisse à l'écran, il n'a aucun effet car aucun signal ne lui est attaché. La Figure 9.14 montre l'affichage obtenu :

Figure 9.14. Exemple de sélecteur de fichier

exemple sélecteur de fichier

Le code source de selectfichier.py est le suivant :

     1   #!/usr/bin/env python
     2   
     3   # exemple selectfichier.py
     4   
     5   import pygtk
     6   pygtk.require('2.0')
     7   import gtk
     8   
     9   class ExempleSelecteurFichier:
    10       # On recupere le nom du fichier choisi et on l'affiche dans la console
    11       def ok_fichier(self, w):
    12           print "%s" % self.selectfichier.get_filename()
    13   
    14       def destroy(self, widget):
    15           gtk.main_quit()
    16   
    17       def __init__(self):
    18           # Creation d'un nouveau widget de selection de fichier
    19           self.selectfichier = gtk.FileSelection("Selection de fichier")
    20   
    21           self.selectfichier.connect("destroy", self.destroy)
    22           # Connexion du bouton OK a la methode ok_fichier()
    23           self.selectfichier.ok_button.connect("clicked", self.ok_fichier)
    24       
    25           # Connexion du bouton Annuler a la destruction du widget
    26           self.selectfichier.cancel_button.connect("clicked",
    27                                            lambda w: self.selectfichier.destroy())
    28       
    29           # Definissons le fichier, comme s'il s'agissait d'une boite de dialogue
    30           # d'enregistrement de fichier et que nous donnions un fichier par defaut
    31           self.selectfichier.set_filename("pingouin.png")
    32       
    33           self.selectfichier.show()
    34   
    35   def main():
    36       gtk.main()
    37       return 0
    38   
    39   if __name__ == "__main__":
    40       ExempleSelecteurFichier()
    41       main()