Página 1 de 1

Script con Gtk2

NotaPublicado: 2008-02-01 16:27 @727
por Iñigo
Kaixo!!

Soy un novato utilizando la biblioteca Gtk2, y la verdad, los widget funcionan todos correctamente, pero... tengo un problema, a ver cómo lo explico. Tengo una ventana principal en la cual tengo un campo textentry y un textview, además de ciertos botoncitos; el campo textentry funciona ok, y los botoncitos también, pero el textview, no o si, según se mire.

Si busco una palabra en un determinado diccionario, funciona Ok, y si esta palabra tiene más significados, los muestra en la textview, pero si hago una segunda búsqueda, me muestra la anterior búsqueda. En fin, que no actualiza el campo, he intentado todo, pero no encuentro nada, ni ningún ejemplo en el que ver my problem.

Esto vendría a ser el script que estoy haciendo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use LWP 5.64;
use Gtk2::GladeXML;
use Gtk2 -init;
my $browser=LWP::UserAgent->new;
..
..
my $programa = Gtk2::GladeXML->new('program1.glade');
my $ventana_principal = $programa->get_widget('Ventana_Principal');
my $palabraentrada=$programa->get_widget('palabra');
my $resultado=$programa->get_widget('busquedaresultado');
$programa->signal_autoconnect_from_package('main');
$ventana_principal->show_all();
Gtk2->main;
sub on_salir_clicked { Gtk2->main_quit; }
sub on_busqueda_clicked {
   my $file="";
   my $buffertxt= Gtk2::TextBuffer->new;
   my $hitza=$hitz_sartuta->get_text();
   my $response=$browser->post ...
   ....
   ....
   ....
   $file=$response->content;
   $buffertxt->insert_at_cursor($file);  
   $resultado->set_buffer($buffertxt);
 }

 
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Y son en las dos últimas líneas, donde no consigo que me actualice la ventana del textview. He probado con un campo label, y funciona Ok, es más, actualiza los datos, pero no consigo lo mismo con el campo textview.

Alguna ayudita, please.

Aio

Let's GNU

NotaPublicado: 2008-02-01 21:10 @924
por explorer
Egunon, Iñigo. Bienvenido a los foros de Perl en Español.

Haz una cosa... intercambia esas dos líneas... es decir... inmediatamente que has creado el objeto $buffertxt, asocialo, con set_buffer, al objeto $resultado. Y más tarde, preocupate solo de actualizar el $buffertxt.

Es más... creo que podrías también hacer lo siguiente: al principio del programa creas los objetos que necesites, incluyen el textview y el TextBuffer. Haces luego la asociación entre los dos. Y el resto del programa consiste únicamente en la limpieza y escritura del buffer. Nada de crear buffers cada vez que necesites cambiar el contenido del textview: borra su contenido actual y luego escribe dentro el nuevo contenido.

Sacado de http://www.linuxjournal.com/article/6586 , sección TextViews.

Ya nos dirás...

NotaPublicado: 2008-02-02 05:39 @277
por Iñigo
Kaixo!!

Lo solucioné, pero por ahora la única forma que he encontrado por ahora de actualizarlo, ha sido creándolo como variable local, aunque es un engorro, como variable global me dice que tururú.

De todas formas voy a probar el set_buffer y ya comentaré qué tal me ha ido.

Mila ezker por responder ;-)

Aio.

Let's GNU