Значки системных тем и PyQt4
Вопрос
Я пишу базовую программу на Python, используя модуль PyQt4.Я хотел бы иметь возможность использовать значки моей системной темы для таких вещей, как значок диалогового окна настроек, но я понятия не имею, как это сделать.Итак, мой вопрос: как узнать местоположение значка, но убедиться, что оно меняется в соответствии с темой значка системы?Если это имеет значение, я разрабатываю это под Ubuntu 9.04, поэтому использую рабочий стол gnome.
Решение
К сожалению, похоже, что Qt не поддерживает получение значков для определенной темы.Есть способы сделать это как для KDE, так и для Gnome.
Способ KDE довольно элегантен, что имеет смысл, учитывая, что Qt — это набор инструментов KDE.Вместо использования класса PyQt4.QtGui QIcon вы используете класс PyKDE4.kdeui KIcon.Примером этого является:
from PyKDE4.kdeui import *
icon = KIcon("*The Icon Name*")
см. документацию PyKDE для этого класса, здесь.
Один из способов получить поддержку этого для gnome — использовать пакет python gtk.Это не так удобно, как в KDE, но, тем не менее, работает.Его можно использовать следующим образом:
from PyQt4 import QtGui
from gtk import icon_theme_get_default
iconTheme = icon_theme_get_default()
iconInfo = iconTheme.lookup_icon("*The Icon Name*", *Int of the icon size*, 0)
icon = QtGui.QIcon(iconInfo.get_filename())
См. документацию по Класс темы значка и Значок Информационный класс.
РЕДАКТИРОВАТЬ:спасибо за исправление CesarB
Другие советы
Используйте класс PyKDE4 KIcon:
Не так давно я сам провел приличное количество исследований по этому вопросу и пришел к выводу, что, к сожалению, Qt не предоставляет эту функциональность кроссплатформенным способом.В идеале класс QIcon должен иметь значения по умолчанию для открытия файла, сохранения, «+», «-», предпочтений и т. д., но, учитывая, что это не так, вам придется получить соответствующий значок для среды вашего рабочего стола.