系统主题图标和 PyQt4

发布于 2024-07-24 17:54:29 字数 166 浏览 2 评论 0原文

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

I'm writing a basic program in python using the PyQt4 module. I'd like to be able to use my system theme's icons for things like the preference dialog's icon, but i have no idea how to do this. So my question is, how do you get the location of an icon, but make sure it changes with the system's icon theme? If it matters, i'm developing this under ubuntu 9.04, so i am using the gnome desktop.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

老子叫无熙 2024-07-31 17:54:29

不幸的是,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 的更正

Unfortunately, It appears that Qt does not support getting icons for a specific theme. There are ways to do this for both KDE and Gnome.

The KDE way is quite elegant, which makes sense considering that Qt is KDE's toolkit. Instead of using the PyQt4.QtGui class QIcon, you instead use the PyKDE4.kdeui class KIcon. An example of this is:

from PyKDE4.kdeui import *
icon = KIcon("*The Icon Name*")

see the PyKDE documentation for this class, here.

One way to gain support for this for gnome is to use the python gtk package. It is not as nice as the kde way, but it works none the less. It can be used like this:

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())

See the documentation for the Icon Theme class and Icon Info class.

EDIT: thanks for the correction CesarB

拥抱影子 2024-07-31 17:54:29

不久前我自己花了相当多的时间研究这个问题,我的结论是,不幸的是,Qt 并没有以跨平台的方式提供这个功能。 理想情况下,QIcon 类将具有文件打开、保存、“+”、“-”、首选项等的默认设置,但考虑到这一点,您不必为您的桌面环境获取适当的图标。

I spent a decent amount of researching this myself not long ago, and my conclusion was that, unfortunately, Qt doesn't provide this functionality in a cross-platform fashion. Ideally the QIcon class would have defaults for file open, save, '+', '-', preferences, etc, but considering it doesn't you'll have to grab the appropriate icon for your desktop environment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文