9.14. Selectores de Fichero

El control de selección de fichero es una forma rápida y fácil de mostrar una caja de diálogo de Fichero. Viene con botones Ok, Cancelar y Ayuda, por lo que es estupendo para ahorrase tiempo de programación.

Para crear una nueva caja de selección de fichero se usa:

  filesel = gtk.FileSelection(title=None)

Para fijar el nombre de fichero, por ejemplo para mostrar un directorio específico, o establecer un fichero predeterminado, usa este método:

  filesel.set_filename(filename)

Para obtener el nombre de fichero que el usuario ha escrito o seleccionado, se usa este método:

  filename = filesel.get_filename()

También hay referencias a los controles contenidos en el control de selección de ficheros. Estos son los atributos:

  filesel.dir_list         # lista de directorios
  filesel.file_list        # lista de ficheros
  filesel.selection_entry  # entrada de selección
  filesel.selection_text   # texto de selección
  filesel.main_vbox        # caja vertical principal
  filesel.ok_button        # botón ok
  filesel.cancel_button    # botón cancelar
  filesel.help_button      # botón ayuda
  filesel.history_pulldown # lista de historia
  filesel.history_menu     # menú de historia
  filesel.fileop_dialog # diálogo
  filesel.fileop_entry # entrada
  filesel.fileop_file # fichero
  filesel.fileop_c_dir # cambio de directorio
  filesel.fileop_del_file # borrar fichero
  filesel.fileop_ren_file # renombrar fichero
  filesel.button_area      # área de botones
  filesel.action_area      # área de acción

Lo más probable es que se quieran usar los atributos ok_button, cancel_button, y help_button para conectar sus señales a las retrollamadas.

El programa de ejemplo filesel.py ilustra el uso del control de selección de ficheros. Como se puede ver, no hay mucho más que decir para crear un control de selección de ficheros. Aunque en este ejemplo el botón Ayuda aparece en pantalla, no hace nada porque no hay ninguna señal conectada a él. La figura Figura 9.14, “Ejemplo de Selección de Ficheros” muestra la pantalla resultante:

Figura 9.14. Ejemplo de Selección de Ficheros

Ejemplo de Selección de Ficheros

El código fuente de filesel.py es:

    1	#!/usr/bin/env python
    2	
    3	# ejemplo filesel.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class FileSelectionExample:
   10	    # Obtener el nombre del fichero seleccionado e imprimirlo a la consola
   11	    def file_ok_sel(self, w):
   12	        print "%s" % self.filew.get_filename()
   13	
   14	    def destroy(self, widget):
   15	        gtk.main_quit()
   16	
   17	    def __init__(self):
   18	        # Creamos un nuevo control de selección de fichero
   19	        self.filew = gtk.FileSelection("File selection")
   20	
   21	        self.filew.connect("destroy", self.destroy)
   22	        # Conectar ok_button al método file_ok_sel
   23	        self.filew.ok_button.connect("clicked", self.file_ok_sel)
   24	    
   25	        # Conectar cancel_button para destruir el control
   26	        self.filew.cancel_button.connect("clicked",
   27	                                         lambda w: self.filew.destroy())
   28	    
   29	        # Fijamos el nombre de fichero, como si fuese un diálogo de guardado,
   30	        # y damos un nombre por defecto
   31	        self.filew.set_filename("penguin.png")
   32	    
   33	        self.filew.show()
   34	
   35	def main():
   36	    gtk.main()
   37	    return 0
   38	
   39	if __name__ == "__main__":
   40	    FileSelectionExample()
   41	    main()