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 , y , 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 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:
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()