GtkFr - Cours Gtk+-2

PyLaSelectionDesFichiers

PageAccueil :: LesNews :: Telechargement :: Liens :: Forum :: LeChat :: Contact
DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.94
<< La barre de progression PyGtk Les fenêtres avec barres de défilement >>


La sélection des fichiers

1. Présentation

Pour qu'un utilisateur puisse sélectionner un fichier pour des actions comme la sauvegarde ou l'ouverture, nous allons utiliser les widgets GtkFileChooserDialog et GtkFileChooser.

1.1 Hiérarchie

GObject -> GtkObject -> GtkWidget -> GtkContainer -> GtkBin? -> GtkWindow -> GtkDialog -> GtkFileChooserDialog
GInterface? -> GtkFileChooser

2. Utilisation de base

2.1 Création

Nous n'allons étudier qu'une seule fonction de création sur les deux que propose GTK+ :
dialog_window = gtk.FileChooserDialog?(title, parent, action, (first_button_text,...) )
Avec cette fonction nous allons donc ainsi créer la boîte de dialogue qui va nous demander de sélectionner un nom de fichier (ou un répertoire) pour effectuer une opération de sauvegarde ou autre.
Le premier paramètre title est le titre de la fenêtre, le deuxième paramètre parent permet de définir la fenêtre parente.
Le troisième paramètre action permet de définir le comportement de la boîte de dialogue. Ce paramètre peut prendre quatre valeurs différentes :
Ensuite le fonctionnement est le même que pour les boîte de dialogue classique, il faut ajouter les boutons présents dans la boîte de sélection ainsi que les valeurs de retour, ceci par un tuple de la forme: ( boutton1, valeur1, boutton2, valeur2, ....)

2.2 Affichage

Comme nous venons de le voir, le widget GtkFileChooserDialog dérive de GtkDialog, c'est donc tout naturellement que l'affichage de la boîte de sélection va se faire avec cette fonction :
reponce = dialog_window.run ()
a valeur de retour sera très importante pour savoir, si l'utilisateur à sélectionné un nom de fichier ou pas.

2.3 Récupération du chemin

Encore une fois, nous allons utiliser les propriétés du widget GtkDialog. Si la valeur de retour de run() est gtk.RESPONSE_OK, alors un nom de fichier a été sélectionné, et il faut donc récupérer sa valeur avec la fonction suivante :
fichier = dialog_window.get_filename()
fichier est de type string et contient le nom de fichier selectionné

2.4 Definition de filtres

Création d'un GtkFileFilter?
filter = gtk.FileFilter?()
filter.set_name(filename)
filter.add_pattern(format)

Ajout du filtre à la fenetre de selection de fichier:
dialog_window.add_filter(filter)

2.5 Programme exemple

2.5.1 Programme exemple (gestion des evenements)
Nous allons créer une fenêtre avec un bouton nous permettant d'ouvrir une GtkFileChooserDialog. Une fois le fichier sélectionné, nous affichons son chemin sur la sortie standard.
import gtk

def OnDestroy(widget, data):
    # Arret de la boucle evenementielle
    gtk.main_quit()

def OnButton(widget, data):
    wParent = data
    wFileSelection = gtk.FileChooserDialog("Ouvrir...",
                                           wParent,
                                           gtk.FILE_CHOOSER_ACTION_OPEN,
                                           (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                           gtk.STOCK_OPEN, gtk.RESPONSE_OK));
    
    if(wFileSelection.run() == gtk.RESPONSE_OK):
        fichier = wFileSelection.get_filename()
        print fichier

    # Arret de la boucle evenementielle
    gtk.main_quit()

def main():
    # Creation de la fenetre
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_title("GtkFileSelection")
    window.set_default_size(320, 200)

    button = gtk.Button("Explorer...");
    window.add(button)

    window.connect("destroy", OnDestroy, None)
    button.connect("clicked", OnButton, None)

    window.show_all()

    gtk.main()
    
if __name__ == '__main__':
    main()
}
Résultats




2.5.2 Programme exemple (Selection d'un répertoire)
import gtk

window = gtk.FileChooserDialog("Ouvrir...",
                               gtk.Window(gtk.WINDOW_TOPLEVEL),
                               gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
                               (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                gtk.STOCK_OPEN, gtk.RESPONSE_OK));

if(window.run() == gtk.RESPONSE_OK):
    fichier = window.get_filename()
    print fichier
Résultat


<< La barre de progression PyGtk Les fenêtres avec barres de défilement >>

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]
Apinc