Página 1 de 1

Cómo coloco un separador con Gtk y Perl

NotaPublicado: 2009-05-06 21:10 @923
por proxy_lainux
Hola

Estoy haciendo un programa con Gtk2 y Perl; hasta ahora ya aprendí como crear una ventana, agregarle botones, etc., pero tengo un problema: al leer un tutorial de gtk-perl encontré varias cosas interesantes, y una de ellas es cómo crear un separador.

Estaba intentando crear dos botones y un separador para separar de un label... así es como quiero que quede.

Código: Seleccionar todo
label
separador
botones


Pero al incluirle el separador, me aparece junto a los botones, y lo que quiero es que me aparezca encima; ya intenté mover el código para que me aparezca diferente, pero siempre me aparece igual, les dejo el código que llevo hecho.

¿Pero alguien sabe cómo puedo colocar el separador encima de los botones?, porque me gustaría colocar un label encima del separador, de hecho... ¿alguien sabe cómo colocar todo ese tipo de cosas en el lugar y la forma que yo quiera?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use Glib qw/TRUE FALSE/;
use Gtk2 '-init';

sub winnew{
$winn = Gtk2::Window->new('toplevel');
$winn->set_title('proxy_lainux');
$winn->set_border_width(100);
$winn->show;
}

$win = Gtk2::Window->new('toplevel');
$win->set_title('Belial & Grimoire');
$win->set_border_width(110);
$win->signal_connect(delete_event => sub {Gtk2->main_quit()});

$box1 = Gtk2::HBox->new(FALSE,0);
$win->add($box1);

$sep = Gtk2::HSeparator->new;
$box1->pack_start($sep,FALSE,TRUE,20);
$sep->show;

$boton = Gtk2::Button->new('Ventana nueva');
$boton->signal_connect(clicked => \&winnew, 'Boton1');
$box1->pack_start($boton,TRUE,TRUE,0);
$boton->show;

$boton = Gtk2::Button->new('Frase');
$boton->signal_connect(clicked => \&frase, 'Boton2');
$box1->pack_start($boton,TRUE,TRUE,0);
$boton->show;

$box1->show;
$win->show;

Gtk2->main;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2009-05-07 06:27 @310
por explorer
El capítulo 6 del tutorial de GTK2-Perl está dedicado completamente a eso.

Se trata de usar las funciones pack() junto con los hbox y vbox.

En tu ejemplo, se podría hacer con un vbox (los tres elementos puestos en vertical) o con 3 hbox (un elemento por cada uno).

Otra forma es usando tablas (Cap.6.4).

NotaPublicado: 2009-05-07 22:42 @987
por proxy_lainux
Hola

Lo intenté, pero no lo logro. Algo que me di cuenta es que si pongo en vertical las cosas, sí me aparece el separador como quiero, pero los botones me aparecen también en vertical... ¿será acaso que tengo que hacer que los botones se coloquen en horizontal, y el separador en vertical?

¿O alguien podría darme un ejemplo, por favor?

salu2 :D

NotaPublicado: 2009-05-09 19:01 @834
por proxy_lainux
hola

creo que ya encontré cómo. Les dejo el código por si a alguien le sirve, o si ven algún fallo, favor de decirme.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use Glib qw/TRUE FALSE/;
use Gtk2 '-init';

sub winnew{
$winn = Gtk2::Window->new('toplevel');
$winn->set_title('proxy_lainux');
$winn->set_border_width(100);

$bo2 = Gtk2::HBox->new(TRUE,10);

my $salir = Gtk2::Button->new('salir');
$salir->signal_connect(clicked => sub {Gtk2->main_quit()});

$bo2->add($salir);
$winn->add($bo2);
$winn->show_all;
}


$win = Gtk2::Window->new('toplevel');
$win->set_title('Belial & Grimoire');
$win->set_border_width(110);
$win->signal_connect(delete_event => sub {Gtk2->main_quit()});

$box1 = Gtk2::HBox->new(TRUE,10);

my $vbox = Gtk2::VBox->new( FALSE, 1 );
$vbox->pack_start( $etiqueta = Gtk2::Label->new(),FALSE ,FALSE ,1);
$vbox->pack_start( Gtk2::HSeparator->new, FALSE, FALSE,1);

my $exit = Gtk2::Button->new( 'salir' );
$exit->signal_connect( clicked => sub {Gtk2->main_quit()});
my $fras = Gtk2::Button->new( 'Frase' );
$fras->signal_connect( clicked => sub { $etiqueta->set_text('Hola mundo')});
my $winv = Gtk2::Button->new( 'ventana nueva' );
$winv->signal_connect( clicked => \&winnew);

$box1->add( $winv);
$box1->add( $fras);
$box1->add( $exit);

$vbox->pack_end( $box1, FALSE, FALSE, 1 );
$win->add($vbox);

$win->show_all;

Gtk2->main;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4