【发布时间】:2009-06-15 19:25:28
【问题描述】:
我正在使用 PyQt4 模块在 python 中编写一个基本程序。我希望能够将系统主题的图标用于首选项对话框的图标之类的东西,但我不知道该怎么做。所以我的问题是,你如何获得图标的位置,但要确保它随系统的图标主题而变化?如果重要的话,我正在 ubuntu 9.04 下开发它,所以我使用的是 gnome 桌面。
【问题讨论】:
我正在使用 PyQt4 模块在 python 中编写一个基本程序。我希望能够将系统主题的图标用于首选项对话框的图标之类的东西,但我不知道该怎么做。所以我的问题是,你如何获得图标的位置,但要确保它随系统的图标主题而变化?如果重要的话,我正在 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 文档,here。
获得 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())
请参阅 Icon Theme class 和 Icon Info class 的文档。
编辑:感谢 CesarB 的更正
【讨论】:
QIcon.fromTheme('icon_name', fallback)。我花了一段时间才找到它!
使用 PyKDE4 KIcon 类:
【讨论】:
不久前我自己花了很多时间研究这个,我的结论是,不幸的是,Qt 没有以跨平台的方式提供这个功能。理想情况下,QIcon 类将默认为文件打开、保存、“+”、“-”、首选项等,但考虑到它,您不必为您的桌面环境获取适当的图标。
【讨论】: