Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/09/2004, 17:46
Avatar de Jano.cl
Jano.cl
 
Fecha de Ingreso: diciembre-2001
Ubicación: Chile
Mensajes: 258
Antigüedad: 23 años
Puntos: 0
Tema: Tip

Pregunta: ¿ Cómo crear un boton con una imagen ?

Respuesta:

Como GtkButton solo tiene la capacidad de contener un solo widget, que por defecto vendria siendo GtkLabel, lo que tendriamos que hacer es crear un botón vacio y a ese botón vacio agregarle con el método add() un container que tenga la capacidad de contener más de un widget, y que a su vez este container tenga un GtkLabel y GtkPixmap en su interior.

Ejemplo:
Código PHP:
<?php

if(!extension_loaded("gtk"))
{
        
dl'php_gtk.' PHP_SHLIB_SUFFIX);
}


function 
salir()
{
   
gtk::main_quit();
}

//creamos la ventana principal
$win = &new GtkWindow();
$win->realize();
//creamos un boton (vacio, sin etiqueta)
$boton = &new GtkButton();
//creamos una caja horizontal
$hbox = &new GtkHBox();
//creamos una etiqueta
$etiqueta = &new GtkLabel("Un boton");
//creamos un pixmap
list($pix,$mask) = gdk::pixmap_create_from_xpm($win->windownull"pixmap.xpm");
$pixmap = &new GtkPixmap($pix,$mask);
//añadimos $pixmap y $etiqueta al container $hbox
$hbox->pack_start($pixmap);
$hbox->pack_end($etiqueta);
//añadimos $hbox a $boton con el método add()
$boton->add($hbox);
//añadimos $boton a $win
$win->add($boton);

//conectamos la ventana principal y el boton con el callback(función) "salir"
$win->connect("destroy","salir");
$boton->connect("clicked","salir");
//mostramos la ventana
$win->show_all();

//iniciamos el loop principal
gtk::main();
?>
Espero que a alguien le sirva y también espero que no me haya enredado mucho con la explicación, nunca he sido muy bueno en eso de explicar.

Saludos

Pd: El Formato de la imagen siempre tiene que ser xpm. Si usan Linux y tienen un icono que quieran usar y este no está en formato xpm, lo que pueden hacer es convertir ese icono a formato xpm usando ImageMagick (que viene en casi todas las distros por defecto)

Código:
$convert icono.png icono.xpm
Pd2: Ya se viene PHP-GTK 2 , y a mi recién se me ocurrió meterme en esto de PHP GTK, bueno, me sirve para estar preparado.