Domanda

Sto scrivendo un programma di base in python utilizzando il modulo PyQt4. Mi piacerebbe essere in grado di utilizzare le icone del mio tema di sistema per cose come l'icona della finestra di dialogo delle preferenze, ma non ho idea di come fare questo. Quindi la mia domanda è: come si fa a ottenere la posizione di un'icona, ma assicurarsi che cambia con tema di icone del sistema? Se è importante, sto sviluppando questo sotto Ubuntu 9.04, in modo da sto utilizzando il desktop GNOME.

È stato utile?

Soluzione

Purtroppo, sembra che Qt non supporta ottenere le icone per un tema specifico. Ci sono modi per farlo sia per KDE e Gnome.

Il modo in cui KDE è molto elegante, che ha un senso se si considera che Qt è toolkit di KDE. Invece di utilizzare la classe QIcon PyQt4.QtGui, è invece utilizzare la classe KIcon PyKDE4.kdeui. Un esempio di questo è:

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

consultare la documentazione PyKDE per questa classe, qui .

Un modo per ottenere sostegno per questo per GNOME è quello di utilizzare il pacchetto python gtk. Non è così bello come il modo in cui KDE, ma funziona comunque. Può essere utilizzato in questo modo:

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

Si veda la documentazione per il Icona classe Tema e Icona Info classe .

EDIT: grazie per la correzione di CesarB

Altri suggerimenti

Ho passato una discreta quantità di ricerca di questo me non molto tempo fa, e la mia conclusione è stata che, purtroppo, Qt non fornisce questa funzionalità in modo cross-platform. Idealmente la classe QIcon avrebbe default per aprire il file, salvare, '+', '-'., Preferenze, ecc, ma considerando che non si dovrà afferrare l'icona appropriata per l'ambiente desktop

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top