Pygtk y Gtk.Dialog

Javier Pérez Pacheco javielinux en gmail.com
Mar Jul 24 12:16:22 CEST 2007


He realiazado bastante pruebas. Lo único que hago es lanzar el Thread antes
de empezar a realizar los comandos de linux (que debería de mostrar el
dialogo) y cerrarlo al final (que cierra el dialogo)

La cosa es que la ventana sale sólo si pongo d.run() y tengo que darle a la
"X" para que empiece el proceso. Si pongo d.show() no sale la ventana

Te pongo un programa de prueba a ver si puedes ver el fallo. Debe de salir
la ventana de dialogo mientras escribe los 50 números, y sólo sale si pongo
d.run()

no se cual puede ser el problema al poner show()

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import gtk
import os
import string
import threading
import time
import gobject

class MyThread(threading.Thread):
    def __init__(self):
        super(MyThread, self).__init__()

        self.d = gtk.Dialog("Dialogo")
        self.d.set_border_width(4)
        self.d.set_modal(False)

        self.pbar = gtk.ProgressBar()

        self.d.vbox.pack_start(self.pbar, False, False, 0)

        self.pbar.show()

        self.d.show_all()

        #self.d.show()
        self.d.run()

        self.quit = False

    def update(self):
        self.pbar.pulse()
        return False


    def close(self):
        self.quit = True
        self.d.destroy()

    def run(self):
        while not self.quit:
            gobject.idle_add(self.update)

t = MyThread()
t.start()
i = 0
while i<50:
    print str(i)
    i = i + 1
    time.sleep(0.1)

t.close()

El día 24/07/07, Jesus Rodriguez <foxandxss en gmail.com> escribió:
>
> Hola, conozco tus scripts :P
>
> Sobre tu problema, a falta de ver el código completo, te aconsejaría que
> intentes ver de donde viene el problema. Yo normalmente en estos casos,
> suelo hacer pruebas en un fichero nuevo. En este caso podrias lanzar un
> Thread mientras lanzas algun proceso con fork donde uses imagemagick y ver
> si funciona bien para ir descartando fallos.
>
> Siento no ayudar mucho más, la clase del thread parece correcta, pero
> puede
> no estar ahi el fallo.
>
>
> Un saludo.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>




Más información sobre la lista de distribución Python-es