Y a-t-il des icônes par défaut dans PyQt/PySide?

je suis en train de lire un tutoriel sur PySide et je me disais , est-ce que je dois trouver mes propres icônes pour chaque chose ou est-ce qu'il y a un moyen d'utiliser certaines icônes intégrées . De cette façon, je n'aurais pas besoin de trouver un ensemble complet de nouvelles icônes si je veux que mon petit gui tourne sur un autre environnement de bureau .

23
demandé sur user1155844 2012-07-25 09:21:46

7 réponses

ce qu'il vous faut, C'est Pyside QIcon.fromTheme fonction. Basicaly il crée l'objet QIcon avec l'icône nécessaire du thème système actuel.

Utilisation:

undoicon = QIcon.fromTheme("edit-undo")

"modifier undo" - le nom de l'icône "type" / "Fonction" peut être trouvé ici

cela fonctionne sur les systèmes X11, pour MacOSX et Windows, vérifiez la documentation QIcon QIcon.fromTheme

Edit insérant ceci à partir du site web, depuis la dernière fois qu'il s'agissait d'un lien cassé.

statique PySide.QtGui.QIcon. fromTheme ( name [, fallback=QIcon ()] )

paramètres:

Type de retour:

PySide.QtGui.QIcon

renvoie le PySide.QtGui.QIcon correspondant au nom dans le thème de l'icône courante. Si aucune icône n'est trouvée dans le thème courant le repli est retourné à la place.

la dernière version de la spécification freesktop icon et de la spécification de nommage peut être obtenue ici:

pour récupérer une icône du thème de l'icône courante:

undoicon = QIcon.fromTheme("edit-undo")

ou si vous voulez fournir un repli garanti pour les plates-formes qui ne supportent pas les icônes de thème, vous pouvez utiliser le deuxième argument:

undoicon = QIcon.fromTheme("edit-undo", QIcon(":/undo.png"))

Note

par défaut, seul X11 supporte les icônes thématiques. Afin d'utiliser des icônes thématiques sur Mac et Windows, vous devrez regrouper un thème compatible dans l'un de vos PySide.QtGui.QIcon.themeSearchPaths() et définir les PySide.QtGui.QIcon.themeName () .

Voir aussi

33
répondu Paweł Jarosz 2016-06-17 14:40:06

il y a une autre façon d'accéder à certaines icônes standard de PyQt/PySide en utilisant le pixmap standard dans le style par défaut. Par exemple, ce qui suit crée une icône pour ouvrir un fichier:

self.style().standardIcon(QtGui.QStyle.SP_DialogOpenButton)

pour la liste complète des pixmaps standard, voir:

http://srinikom.github.io/pyside-docs/PySide/QtGui/QStyle.html#PySide.QtGui.PySide.QtGui.QStyle.StandardPixmap

7
répondu Nimar 2014-06-10 21:27:08

Je ne pense pas que ce soit spécifique à une reliure, vous pouvez consulter la documentation générale de qt

regardez ici et ici

question connexe

6
répondu tovmeod 2017-05-23 11:54:59

j'ai toujours du mal à trouver des images des icônes standard, donc pour référence future: http://nukesaq88.hatenablog.com/entry/2013/04/12/005525

et le code que j'utilise (PyQt4, Pyside probablement similaire):

    # In method of QMainWindow subclass
    stdicon = self.style().standardIcon
    style = QtGui.QStyle
    reload_foo = QtGui.QAction(stdicon(style.SP_BrowserReload), '&Reload', self)

Ce serait bien si l' (évidemment, auto-généré) Qt docs avait des photos dans le standardIcons enum table...

2
répondu kitsu.eb 2015-10-03 21:59:40

dans PyQt5 , voici un exemple simple de création d'un bouton-poussoir avec l'icône play:

play_button = QtGui.QPushButton('Play video')
play_button.setIcon(QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_MediaPlay))

la documentation Qt5 fournit une liste des icônes possibles SP ("Pixmap Standard"). Voir enum QStyle::StandardPixmap ici: http://doc.qt.io/qt-5/qstyle.html

1
répondu eqzx 2018-03-30 20:13:14

un autre exemple de PyQt5 utilisant les icônes standard ( eqzx 'S réponse n'a pas fonctionné pour moi):

 from PyQt5.QtWidgets import QApplication, QStyle
 from PyQt5.QtGui import QIcon

 desktop_icon = QIcon(QApplication.style().standardIcon(QStyle.SP_DesktopIcon)
1
répondu pediatrictactic 2018-04-05 15:59:34

dans PyQt, l'icône de fenêtre est par défaut le logo Qt. Je pense que vous aurez à trouver vos propres icônes pour les choses à l'intérieur de l'interface graphique.

0
répondu user1557602 2012-07-27 17:46:24