Вопрос

Я пишу базовую программу на 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:

http://api.kde.org/pykde-4.2-api/kdeui/KIcon.html

Не так давно я сам провел приличное количество исследований по этому вопросу и пришел к выводу, что, к сожалению, Qt не предоставляет эту функциональность кроссплатформенным способом.В идеале класс QIcon должен иметь значения по умолчанию для открытия файла, сохранения, «+», «-», предпочтений и т. д., но, учитывая, что это не так, вам придется получить соответствующий значок для среды вашего рабочего стола.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top