> 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/

Responder a