#python #gtk #icons #pygtk #gdkpixbuf
#python #gtk #Значки #pygtk #gdkpixbuf
Вопрос:
Я чувствую, что это должно быть довольно просто, но, думаю, я чего-то не хватает.
Итак, я хочу установить значок окна с одним из стоковых изображений. Я пытался:
windowIcon = gtk.image_new_form_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
window.set_icon(windowIcon.get_pixbuf())
Затем Python жалуется, что:
Файл «./sample.py «, строка 44, в инициализации
window.set_icon(windowIcon.get_pixbuf())
Ошибка значения: изображение должно быть GdkPixbuf или пустым
Я пытаюсь преобразовать GtkImage в GdkPixbuf, потому что, когда я этого не сделал, python пожаловался, что
Ошибка типа: значок должен быть GdkPixbuf или нет
В документации pygtk говорится:
Если тип хранилища изображения также не gtk.IMAGE_EMPTY или gtk.IMAGE_PIXBUF будет вызвано исключение ValueError.
Итак, я предполагаю, что тип хранилища стокового изображения неверен. Вопрос в том, как мне обойти это?
Ответ №1:
Вы можете использовать метод .render_icon() для любого GtkWidget, чтобы предоставить стандартный элемент в качестве значка.
windowicon = window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
window.set_icon(windowicon)
Комментарии:
1. Спасибо за ответ! Знаете ли вы, как бы я установил пользовательский значок из файловой системы?
Ответ №2:
render_icon()
Метод работает так, как указано выше. В вашем коде возникали проблемы, потому что get_pixbuf()
метод возвращался None
. Это потому, что изображение не было создано из pixbuf
, и по какой-то причине оно не преобразует его. Другой способ получить pixbuf
из изображения — использовать gtk.gdk.pixbuf_new_from_image()
функцию.