2010-02-02 9 views

Respuesta

9

Este es un cambio reciente en GTK - los desarrolladores querían iconos de no aparecer en los botones. En Linux, esto se puede cambiar editando el gconf clave

/desktop/gnome/interface/buttons_have_icons 

en ventanas, creo (que en realidad no lo he probado esto) que es necesario establecer un valor en el archivo de gtkrc (para mí es en C:\Program Files\Gtk+\etc\gtkrc) y use un tema que admita íconos (creo que el predeterminado no).

También puede agregar a su archivo gtk-button-images = 1~/.gtkrc-2.0 después establecer el tema que puede montar sobre la opción de gconf.

EDITAR en respuesta a su comentario:

Al igual que esta respuesta, pero en Python: In Gtk, how do I make a Button with just a stock icon?

para Python, es sólo

image = gtk.Image() 
# (from http://www.pygtk.org/docs/pygtk/gtk-stock-items.html) 
image.set_from_stock(gtk.STOCK_**) 
button = gtk.Button() 
button.set_image(image) 
button.set_label("") 
+0

Gracias por la pronta respuesta. ¿Sabes cómo eliminar la porción de texto de los iconos de los botones? – aberkowitz

+0

Respondí tu comentario en la edición, básicamente es como la pregunta que Trent publicó en el comentario de tu pregunta original. –

+0

@DanielG ¿Cuál es el valor que necesita cambiar en Windows? – techno

2

que tenía que hacer esto para conseguir funciona desde Python sin cambiar mi archivo de configuración. Cuando llamé a set_image(), no se mostraba ninguna imagen.

image = gtk.Image() 
image.set_from_stock(gtk.STOCK_**, gtk.ICON_SIZE_BUTTON) 
button = gtk.Button() 
button.add(image) 
button.show() 
1

Tuve el mismo problema en GTKmm en Windows. El tema "MS-Windows" desactiva las imágenes en los botones de stock y el tema tiene prioridad sobre la configuración en gtkrc (por lo que poner gtk-button-images = true en gtkrc no ayudó). Lo que hice fue modificar el tiempo de ejecución de las configuraciones de GTK, y las imágenes aparecieron como se esperaba. :) Aquí está el código en C++:


Glib::RefPtr<Gtk::Settings> settings = Gtk::Settings::get_default(); 
/* force using icons on stock buttons: */ 
settings->property_gtk_button_images() = true; 

Se debe colocar después de que se construye la primera ventana.

14
equivalente

El Python para establecer la propiedad sin tener que cambiar ninguna archivos de configuración del sistema es:

settings = gtk.settings_get_default() 
settings.props.gtk_button_images = True 

Esto debe seguir una llamada a window.show() y, obviamente, preceder a la función gtk.main() lazo.

+1

Si alguien está buscando hacer esto en C, 'GtkSettings * settings = gtk_settings_get_default(); g_object_set (configuraciones, "gtk-button-images", TRUE, NULL); 'es el procedimiento equivalente. – Fraxtil

-1

Puede mostrar explícitamente la imagen del botón, con justicia, los desarrolladores de Gtk + no recomiendan hacerlo porque reemplaza la configuración de usuario de Gtk +.

Entonces ...

button.get_image().show() 
2

Si trabaja con PyGObject, la nueva sintaxis es:

image.set_from_stock(gtk.STOCK_**, Gtk.IconSize.BUTTON) 
+0

Tuve que usar gtk.ICON_SIZE_BUTTON – jsj

0

en gtk3 gtk.STOCK método ha sido deprecated from v3.10.

en desuso desde la versión 3.10: Uso Gtk.Button.new_with_label() lugar.

En el caso que no ayuda, ya que apunta a la solución de etiqueta personalizada (new_with_label) Si desea utilizar la materia Stock aún puede hacerlo con nuevos métodos y Gtk.Button.new_from_icon_name(icon_name, size)Gtk.Button.new_with_mnemonic(label) que crearán nuevos botones con valores ícono y etiqueta respectivamente.

nuevo botón Ejemplo con una "reserva" icono:

button = Gtk.Button.new_from_icon_name ("edit-paste", Gtk.IconSize.SMALL_TOOLBAR) 

Ejemplo nuevo botón con una "reserva" etiqueta:

button = Gtk.Button.new_with_mnemonic("_Open") 

NOTA: el código seria la creación de una constante variable en lugar de utilizar la cadena recta es una mejor opción :)

Referencias:

Cuestiones relacionadas