系统主题图标和PyQt4

Cds*_*boy 8 python icons pyqt4

我正在使用PyQt4模块在python中编写基本程序.我希望能够使用系统主题的图标来显示首选项对话框的图标,但我不知道如何执行此操作.所以我的问题是,你如何获得一个图标的位置,但确保它随着系统的图标主题而改变?如果它很重要,我正在ubuntu 9.04下开发这个,所以我使用的是gnome桌面.

Cds*_*boy 7

不幸的是,Qt似乎不支持获取特定主题的图标.有很多方法可以为KDE和Gnome做到这一点.

KDE方式非常优雅,考虑到Qt是KDE的工具包,这是有道理的.而不是使用PyQt4.QtGui类QIcon,而是使用PyKDE4.kdeui类KIcon.一个例子是:

from PyKDE4.kdeui import *
icon = KIcon("*The Icon Name*")
Run Code Online (Sandbox Code Playgroud)

看到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())
Run Code Online (Sandbox Code Playgroud)

请参阅Icon Theme类Icon Info类的文档.

编辑:感谢CesarB的修正

  • 新语法是`QIcon.fromTheme('icon_name',fallback)`.花了我一会儿找到它! (3认同)