系统主题图标与PyQt4

8 投票
3 回答
3823 浏览
提问于 2025-04-15 12:16

我正在用Python写一个简单的程序,使用的是PyQt4这个模块。我想要在程序里使用系统主题的图标,比如设置对话框的图标,但我不知道该怎么做。所以我想问,怎么才能找到一个图标的位置,并确保它能随着系统的图标主题而变化?如果有关系的话,我是在ubuntu 9.04下开发的,使用的是gnome桌面。

3 个回答

0

我最近花了一些时间自己研究这个问题,得出的结论是,遗憾的是,Qt并没有提供跨平台的这个功能。理想情况下,QIcon类应该有一些默认的图标,比如打开文件、保存、加号、减号、设置等,但因为它没有这些默认图标,所以你需要根据你使用的桌面环境去找合适的图标。

0

使用 PyKDE4 的 KIcon 类:

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

7

很遗憾,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的更正。

撰写回答