Подтвердить что ты не робот

Значки на складе не отображаются на кнопках

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

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

4b9b3361

Ответ 1

Это недавнее изменение в 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.

EDIT в ответ на ваш комментарий:

Как и этот ответ, но в 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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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


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

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

Ответ 6

в методе Gtk3 gtk.STOCK был устарел от версии 3.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), которые будут создавать новые кнопки со значком и меткой фонта соответственно.

Пример новой кнопки со значком :

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

Пример новой кнопки с меткой :

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

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

Литература:

Ответ 7

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

Итак...

button.get_image().show()