Значки не отображаются на кнопках - PullRequest
12 голосов
/ 03 февраля 2010
self.button = gtk.Button(stock=gtk.STOCK_DELETE)

Показывает только: Удалить

Ответы [ 7 ]

14 голосов
/ 04 июля 2010

Эквивалент Python для установки свойства без необходимости изменения каких-либо системных конфигурационных файлов:

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

Это должно следовать за вызовом window.show () и, очевидно, предшествовать циклу gtk.main ().

9 голосов
/ 03 февраля 2010

Это недавнее изменение в GTK - разработчики хотели, чтобы значки не появлялись на кнопках.В Linux это можно изменить, отредактировав ключ gconf

/desktop/gnome/interface/buttons_have_icons

В Windows, я думаю (я на самом деле не пробовал это), что вам нужно установить значение в вашем файле gtkrc (длямне это в C:\Program Files\Gtk+\etc\gtkrc) и использовать тему, которая поддерживает значки (я думаю, что по умолчанию нет).

Вы также можете добавить gtk-button-images = 1 в ваш ~/.gtkrc-2.0 файл после установка темы, которая может переопределить опцию из gconf.

РЕДАКТИРОВАТЬ в ответ на ваш комментарий:

Так же, как этот ответ, но в Python: В Gtk, как мне сделать кнопку с простым значком?

Для python это просто

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("")
2 голосов
/ 20 июня 2012

Если вы работаете с pygobject, новый синтаксис:

image.set_from_stock(gtk.STOCK_**, Gtk.IconSize.BUTTON)
2 голосов
/ 22 марта 2010

Мне пришлось сделать это, чтобы заставить его работать из Python без изменения моего конфигурационного файла. Когда я вызвал set_image (), изображение не отображалось.

image = gtk.Image()
image.set_from_stock(gtk.STOCK_**, gtk.ICON_SIZE_BUTTON)
button = gtk.Button()
button.add(image)
button.show()
1 голос
/ 28 июня 2010

У меня была такая же проблема в GTKmm на Windows. Тема «MS-Windows» отключает изображения на стандартных кнопках, и тема имеет приоритет над настройками в gtkrc (поэтому установка gtk-button-images = true в gtkrc не помогает) Что я сделал, так это изменил время выполнения настроек GTK, и изображения появились, как и ожидалось. :) Вот код на C ++:


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

Он должен быть размещен после создания первого окна.

0 голосов
/ 27 сентября 2015

в Gtk3 gtk.STOCK метод был устарел с v3.10 .

Устаревший с версии 3.10: используйте Gtk.Button.new_with_label () вместо этого.

В случае, если это не помогает, так как оно указывает на решение для пользовательской метки (new_with_label). Если вы хотите использовать STOCK, вы все равно можете сделать это с новыми методами Gtk.Button.new_from_icon_name(icon_name, size) и Gtk.Button.new_with_mnemonic(label), которые создадут новый кнопки со стоковым значком и надписью соответственно.

Пример новой кнопки с надписью "stock" icon :

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

Пример новой кнопки с надписью "stock" :

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

ПРИМЕЧАНИЕ: для серьезного кода лучше использовать постоянную переменную вместо использования прямой строки:)

Ссылки:

0 голосов
/ 03 февраля 2012

Вы можете явно показать изображение кнопки, справедливо, разработчики Gtk + не рекомендуют делать это, потому что это переопределяет пользовательскую конфигурацию Gtk +.

Итак ...

button.get_image().show()
...