2009-06-15 19 views
8

Estoy escribiendo un programa básico en python usando el módulo PyQt4. Me gustaría poder usar los iconos de mi tema del sistema para cosas como el ícono del diálogo de preferencias, pero no tengo idea de cómo hacer esto. Entonces mi pregunta es, ¿cómo se obtiene la ubicación de un icono, pero asegúrese de que cambie con el tema del icono del sistema? Si importa, estoy desarrollando esto bajo ubuntu 9.04, entonces estoy usando el escritorio gnome.Iconos del tema del sistema y PyQt4

Respuesta

7

Desafortunadamente, parece que Qt no admite la obtención de iconos para un tema específico. Hay formas de hacer esto tanto para KDE como para Gnome.

La forma de KDE es bastante elegante, lo que tiene sentido teniendo en cuenta que Qt es el kit de herramientas de KDE. En lugar de utilizar la clase QQcon de PyQt4.QtGui, en su lugar utiliza la clase PyKDE4.kdeui KIcon. Un ejemplo de esto es:

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

ver la documentación PyKDE para esta clase, here.

Una forma de obtener soporte para esto para gnome es utilizar el paquete python gtk. No es tan agradable como el kde, pero funciona de todos modos. Se puede utilizar la siguiente manera:

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

Consulte la documentación de la Icon Theme class y Icon Info class.

EDIT: gracias por la corrección CesarB

+0

Qt es el kit de herramientas de KDE, no administrador de ventanas. – CesarB

+3

La nueva sintaxis es 'QIcon.fromTheme ('icon_name', fallback)'. Me tomó un tiempo encontrarlo! – Blender

0

yo pasamos una buena cantidad de investigación de este mismo no hace mucho tiempo, y mi conclusión fue que, por desgracia, Qt no proporciona esta funcionalidad en una cruz -forma de plataforma. Lo ideal sería que la clase QIcon tuviese valores predeterminados para archivos abiertos, guardados, '+', '-', preferencias, etc., pero teniendo en cuenta que no es así, tendrás que tomar el ícono apropiado para tu entorno de escritorio.

+0

He llegado a la misma conclusión. Voy a escribir una respuesta que incluye métodos tanto para KDE como para Gnome. – Cdsboy

Cuestiones relacionadas