Estos dos botones,tienen corriendo detrás una rutina que realiza acciones,por ejemplo puede ir desde un cambio de texto,un boton para frenar,un boton para comenzar,sea una búsqueda,una reproducción multimedia,etc.
Estos botones no solo serán lo que vemos en la interfaz gráfica están corriendo rutinas atrás de ellos.
Por lo menos la rutina que indique cambiarla.
Como se hacen estos botones,hay muchas maneras de hacerlos y en distintos lenguajes de programación debe haber miles de maneras de hacerlos,pero yo aquí me concentre en el widget Notebook de Gtk3 y escribiendo en Perl.
Para crear uno de estos botones se hace lo siguiente
Tutorial
Primero que nada creamos una ventana:
my $ventana = Gtk3::Window->new('toplevel');
$ventana->set_title('Ejemplo');
$ventana->set_default_size(200, 200);$ventana->set_border_width(5);
$ventana->signal_connect( destroy => sub { Gtk3->main_quit } );
Si queremos podemos crear el hbox de una vez:
my $hbox = Gtk3::Box->new( 'horizontal', 10 );
Y creamos el widget que contendrá los botones:
my $botones = Gtk3::Notebook->new();
$botones->set_show_tabs(FALSE);
$botones->set_show_border(FALSE);
$hbox->pack_start( $botones, TRUE, TRUE, 0 );
Creamos los botones:
1.El primero es el botón de play en este ejemplo,pero puede ser de lo que quieran
my $boton1 = Gtk3::ToolButton->new_from_stock('gtk-media-play');
$boton1->signal_connect( clicked => \&show_stop );
$botones->append_page($boton1);
La parte en rojo es el nombre del stock,para ver mas visitar el url de abajo.
developer.gnome.org/gtk/2.24/gtk-Stock-Items.htmlSi no quieren usar stocks y quieren usar texto se puede definir de esta manera
my $boton = Gtk3::Button->new_with_label('Palabrar');2.Definimos el segundo botón
Que seria el de stop:
my $boton2 = Gtk3::ToolButton->new_from_stock('gtk-media-stop');
$boton2->signal_connect( clicked => \&show_play );
$botones->append_page($boton2);
Lo de rojo indica que se pase a la sub rutina show_play si se clickea el botón
Creamos dos label,para usar mas efectivamente nuestra futura vbox y nuestras subrutinas:
my $label = Gtk3::Label->new("Perl Gtk3");
my $label2 = Gtk3::Label->new("");
Creamos una vbox
my $vbox = Gtk3::Box->new( 'vertical', 5 );
$vbox->pack_start( $label, FALSE, FALSE, 10 );
$vbox->pack_start( $hbox, FALSE, FALSE, 10 );
$vbox->pack_start( $label2, FALSE, FALSE, 0 );
$vbox->set_border_width(5);
Añadimos nuestra vbox a la ventana y lo mostramos todo:
$ventana->add($vbox);
$ventana->show_all;
Gtk3->main();
Creamos las subrutinas:
La sub rutina del botón play:
sub show_play {
$botones->set_current_page(0);
$label2->set_markup("Play");
}
La sub rutina del botón stop:
sub show_stop {
$botones->set_current_page(1);
$label2->set_markup("Stop");
}
pastebin.com/SQXCvD5GAsí nos queda al ejecutar
Presionamos play y se muestra :
El widget Notebook sirve para muchas cosas,esta es solo una de ellas y su forma verdadera es así
Como pueden darse cuenta ese botón no solo sirve para mostrar el texto de una label,incluso podemos hacer un reproductor de música,usando un modulo como:
Audio::Play::MPG123O muchas cosas mas,yo voy a ver si lo puedo implementar en simplePerlBrowser para usar multipestañas,aunque va estar complicado, pero se puede usar de muchas maneras,por ejemplo algo mas sencillo que ya hice fue unificar el botón de cargar y detención de simplePerlBrowser.
Solo redirigían la señal de clic a una subrutina,que cambie el botón y que haga sus otras funciones :D
Espero que les funcione ya que yo me tarde un rato en usar la documentación de este widget en Perl
developer.gnome.org/gtk3/stable/GtkNotebook.html
Eso es todo :D
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.