[pyar] Problema con Threads y Webkit

Mariano Guerra luismarianoguerra en gmail.com
Mar Ago 10 18:23:18 ART 2010


On Tue, Aug 10, 2010 at 3:31 PM, Mario Colque <colquemario en gmail.com> wrote:
> Gracias por las respuestas.
> Pero me quede probando y me di cuenta de algo, que por lo menos yo, no
> lo explico.
>
> Porqué este código que lo base en el del recetario, funciona con la
> opción 2 (.open()) y no con la 1 (.load_html_string()) ?
>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
>
> import time
> import threading
>
> import gtk
> import gtk.gdk
>
> import webkit
> import time
>
> class molesto(threading.Thread):
>    '''un thread que quiere molestar el main thread'''
>    def __init__(self, ventana):
>        threading.Thread.__init__(self)
>        self.setDaemon(True)
>        self.ventana = ventana
>        self.browser = ventana.browser
>
>    def run(self):
>        '''metodo principal del thread, duerme un tiempo aleatorio y despues
>        cambia el Label'''
>        time.sleep(2)
>
>        html = '<strong>Hola.</strong><br><small>Prueba<strong>
> 1</strong>, 2.</small>'
>
>        gtk.gdk.threads_enter()
>        #opción 1
>        self.browser.load_html_string(html, 'file:/')
>        #opción 2
> #        self.browser.open('http://google.com')
>        self.ventana.show_all()
>        gtk.gdk.threads_leave()
>
> class ventana(gtk.Window):
>    '''ventana con un label, ninguna locura'''
>    def __init__(self):
>        gtk.Window.__init__(self)
>        self.set_default_size(640, 480)
>        self.set_title('gtk con threads')
>        self.browser = webkit.WebView()
>        self.add(self.browser)
>
> if __name__ == '__main__':
>    gtk.gdk.threads_init()
>    ventana = ventana()
>    thread = molesto(ventana)
>    thread.start()
>    gtk.main()
>
> Mi problema en si ya fué resuelto, pero haciendo algunas pruebas me
> tope con esto.
>
> Alguien sabe?

no se me ocurre pero no seria?

self.browser.load_html_string(html, 'file://')

porque queres cargar la pagina en un thread aparte?

webkit se encarga de no bloquearte la gui mientras carga.

ademas entras en la zona critica llamas al load y salis, no se como
maneja internamente los eventos que se van a desencadenar por esa
llamada.

PD: no segui todo el thread asi que puede que este preguntando pavadas.



More information about the pyar mailing list