Ich habe bisher in meinem kleinen Rohbau für eine Browser-Applikation für die trivialen Aktionen wie Back/Forward usw feste Icons, die ich mir mal irgendwo runtergeladen habe. Jetzt würde ich aber gerne zwecks Look&Feel die Icons des jeweiligen Betriebsystems/Oberfläche nutzen. Ich bin bereits auf QStyle.StandardPixmap gestoßen, wo ich mir auch ein paar passende Konstanten ausgeguckt habe. Das Problem: Ich werde aus den Beispielen auf der Seite leider nicht schlau. Wie also kann ich bspw `QStyle.SP_BrowserStop` auf mein Icon für `self.action_stop` anwenden?
browser.ui
browser.py
Qt: OS-spezifische Icons verwenden
Wie wäre es mit Doku lesen?
Am Ende der Aufzählung wird auf die Methode QStyle.standardIcon() verlinkt, der du ein Element dieser Aufzählung übergibst, um ein QIcon-Objekt zurück zu erhalten, welches du an QAction.setIcon() übergeben kannst.
Wenn du dann noch die detaillierte Beschreibung von QStyle aufmerksam liest, findest du auch heraus, wie du an den aktuellen Stil der Anwendung oder eines speziellen Widgets kommst.
Am Ende der Aufzählung wird auf die Methode QStyle.standardIcon() verlinkt, der du ein Element dieser Aufzählung übergibst, um ein QIcon-Objekt zurück zu erhalten, welches du an QAction.setIcon() übergeben kannst.
Wenn du dann noch die detaillierte Beschreibung von QStyle aufmerksam liest, findest du auch heraus, wie du an den aktuellen Stil der Anwendung oder eines speziellen Widgets kommst.
Dumm nur, dass ich die Doku gelesen habe und mit der Anwendung der Funktionen nicht klar kam (wie auch schon im ersten Beitrag angedeutet). Versuche ich nämlich, `standardIcon()` sowas zu übergeben, kommt:
Und der Versuch, zu instanzieren, ergibt erwartungsgemäß:
Wäre nett, wenn du mir auch in normalem Tonfall sagen könntest, was ich missverstehe.
Code: Alles auswählen
Traceback (most recent call last):
File "./browser.py", line 64, in <module>
window = MainWindow()
File "./browser.py", line 18, in __init__
self.set_icons()
File "./browser.py", line 22, in set_icons
home_icon = QtGui.QStyle.standardIcon(QtGui.QStyle.SP_DirHomeIcon)
TypeError: first argument of unbound method QStyle.standardIcon() must be a QStyle instance
Code: Alles auswählen
Traceback (most recent call last):
File "./browser.py", line 64, in <module>
window = MainWindow()
File "./browser.py", line 18, in __init__
self.set_icons()
File "./browser.py", line 22, in set_icons
home_icon = QtGui.QStyle.standardIcon(QtGui.QStyle().SP_DirHomeIcon)
TypeError: PyQt4.QtGui.QStyle represents a C++ abstract class and cannot be instantiated
Hab's jetzt. Denke mal, das meintest du auch mit dem letzten Hinweis. Danke.
Werde ich natürlich noch etwas umschreiben, da ich ja mehrere Symbole ändern will...
Code: Alles auswählen
home_icon = self.style().standardIcon(QtGui.QStyle.SP_DirHomeIcon)
self.action_home.setIcon(home_icon)