tags:

views:

644

answers:

5
self.button = gtk.Button(stock=gtk.STOCK_DELETE)

Only Shows: Delete

+2  A: 

This is a recent change in GTK - the developers wanted icons not to appear on buttons. On Linux, this can be changed by editing the gconf key

/desktop/gnome/interface/buttons_have_icons

On windows, I think (I haven't actually tried this) that you need to set a value in your gtkrc file (for me it's in C:\Program Files\Gtk+\etc\gtkrc) and use a theme that supports icons (I think the default one doesn't).

EDIT in answer to your comment:

Just like this answer, but in Python: http://stackoverflow.com/questions/1734914/in-gtk-how-do-i-make-a-button-with-just-a-stock-icon/1735265#1735265

For python, it's just

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("")
Daniel G
Thanks for the prompt answer. Do you happen to know how to remove the text portion of icons from buttons?
Toucan
I answered your comment in the edit - it's basically like the question Trent posted in the comment to your original question.
Daniel G
A: 

I had to do this to get it to work from Python without changing my config file. When I called set_image(), no image was being displayed.

image = gtk.Image()
image.set_from_stock(gtk.STOCK_**, gtk.ICON_SIZE_BUTTON)
button = gtk.Button()
button.add(image)
button.show()
Tim Swast
A: 

I had the same issue in GTKmm on Windows. The "MS-Windows" theme disables images on stock buttons and the theme has priority over settings in gtkrc (so putting gtk-button-images = true in gtkrc didn't help). What I did is to modify the GTK settings runtime, and the images appeared as expected. :) Here's the code in C++:


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

It should be placed after the first window is constructed.

Gyorgy Szekely
+1  A: 

The Python equivalent for setting the property without having to change any system config files is:

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

This should follow a call to window.show() and, obviously, precede the gtk.main() loop.

z0n3r
A: 

Thanks z0n3r for the solution ! It works for me even if it's called before window.show().

zigazou