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
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
Utilice la clase PyKDE4 kicon:
Gracias por la respuesta :) Aunque me gustaría algo que era menos dependiente de KDE, voy a aceptar esto como la respuesta hasta que venga algo mejor alrededor. – Cdsboy
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.
He llegado a la misma conclusión. Voy a escribir una respuesta que incluye métodos tanto para KDE como para Gnome. – Cdsboy
- 1. ¿Cómo no especifico un tema para WPF y uso el tema del sistema operativo host?
- 2. Actualizando iconos de la bandeja del sistema programáticamente
- 3. Temas: ¿Dependiente del tema?
- 4. Colisión del tema jQuery UI y Bootstrap
- 5. silverlight fuera del navegador - iconos
- 6. Obtención de menús y barras de herramientas de WinForms para usar el tema del sistema?
- 7. tema autorización del cliente cxf
- 8. Aplicación del tema para KeyboardView
- 9. Orchard - Obtener el título del contenido del diseño del tema
- 10. Gancho del teclado del sistema en Vista y más tarde
- 11. Ant, jvmarg, propiedades del sistema y comillas
- 12. ¿Cómo puedo usar los iconos del sistema en mi aplicación de Android?
- 13. ¿Cómo solicito a Windows el tamaño de los iconos de la bandeja del sistema?
- 14. ¿Hay alguna manera de obtener diferentes tamaños de iconos del sistema de Windows en .NET?
- 15. Atributos invertidos en el tema del certificado y el emisor
- 16. Cómo obtener la configuración regional del sistema y el idioma del sistema en cocoa
- 17. Obtención del estado del sistema en python
- 18. Android: ¿Cómo obtener el ID del recurso del tema actual?
- 19. Propiedad del sistema Eclipse
- 20. Fuente del sistema iPhone
- 21. salida del árbol en símbolo del sistema
- 22. Tamaño del bloque del sistema de archivos
- 23. Cambiar los iconos del menú ActionBar según el estilo
- 24. Elección del usuario que implementa el tema
- 25. correo electrónico japonés codificación del tema
- 26. Tema específico del proyecto en sublimetext2
- 27. Diferencia entre qt y PyQt4
- 28. Los botones WPF MessageBox no tienen el tema del sistema operativo
- 29. Cómo reparar el color de fondo de TPageControl sin perder el tema del sistema?
- 30. Como llegar ID del tema en C#
Qt es el kit de herramientas de KDE, no administrador de ventanas. – CesarB
La nueva sintaxis es 'QIcon.fromTheme ('icon_name', fallback)'. Me tomó un tiempo encontrarlo! – Blender