> ventana emergente con las opciones Si, Si a todo, No, No a todo y Cancelar. > Pues bien, el programe se ejecuta pero sale la ventana cada vez que > encuentra un archivo, o no sale, o me da un error, etc..
Uf, eso es muy vago. Necesitaríamos saber qué errores (texto exacto) salen en qué circunstancias. Una traza de error vale más que mil palabras. > el código por comodidad lo colgué en pastebin http://pastebin.com/m17a1e4aa Mucho código, difícilmente la gente se lo mirará. Dos opciones: 1) Simplificarlo al mínimo. 2) Como comentas, dar el glade (y todo lo necesario) para que la gente pueda ejecutarlo en sus máquinas sin más. Como comentario obligado: función comp_file(); ese try/except de un bloque enorme de código con el simple objetivo de capturar el "fd = open(file, 'r')" es una mala idea, dale alguna vuelta. -- http://www.arnau-sanchez.com E echo una versión simplificada de la parte que me da problemas limitándome a mostrar la ventana que pide la confirmación. Mas que error lo que pasa es que sigure recorriendo el bucle y muestra la ventana cada vez que existe el archivo y lo que quiero es que no continué hasta que se pulse algún botón o cierre la ventana (lo que se considerara un no) #!/usr/bin/env python # -*- coding: utf-8 -*- import pygtk import gtk import gtk.glade import sys import time import gobject import re import Image import gettext import os class comp_file(): def __init__(self): overwrite = 0 # Si vale 0 muestra la ventana, 1 se sobreescribe todo y 2 no se soobrescribe nada for file in sys.argv[1:]: # con esto comprobamos si existe el fichero try: open(file, 'r') # si es el caso comprobamos cual es el valor de overwrite if overwrite == 0: # Si es 0 mostramos la ventana comp_file = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_YES_NO, message_format="Error!!") comp_file.format_secondary_text("The file " + file + " exists\n Overwrite??") comp_file.add_buttons("Yes to all", 100, "No to all", 101, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) comp_file.show() def close(w, res): if res == gtk.RESPONSE_NO: pass w.hide() elif res == gtk.RESPONSE_YES: print file w.hide() elif res == 100: w.hide() self.overwrite = 1 elif res == 101: w.hide() self.overwrite = 2 elif res == gtk.RESPONSE_CANCEL: # Si se pulso cancelar se sale del bucle quit() w.hide() comp_file.connect("response", close) elif overwrite == 1: # Si overwrate vale 1 sobreescribimos todos los ficheros print 'si a todo' print file elif overwrite == 2: # Si overwrate vale 2 no sobreescribimos los ficheros print 'No a todo' pass except: # si el fichero no existe se procede a escribir el fichero de salida print file + ' no existe' time.sleep(1.0) if __name__ == "__main__": comp_file() Gracias de antemano
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/