diff --git a/src/pymodaq_gui/examples/icons.py b/src/pymodaq_gui/examples/icons.py new file mode 100644 index 00000000..22a5a050 --- /dev/null +++ b/src/pymodaq_gui/examples/icons.py @@ -0,0 +1,46 @@ +import sys + +from qtpy.QtWidgets import (QApplication, QGridLayout, QPushButton, QStyle, + QWidget, QVBoxLayout) +from qtpy.QtGui import QIcon + + +class Icons(): + def __init__(self, widget: QWidget): + super().__init__() + self.widget = widget + + Ncol = 10 + + icons_style = sorted([attr for attr in dir(QStyle.StandardPixmap) if (attr.startswith("SP_"))]) + + icons_theme = sorted([icon_enum.name for icon_enum in QIcon.ThemeIcon]) + + self.widget.setLayout(QVBoxLayout()) + + layout_style = QGridLayout() + for n, name in enumerate(icons_style): + btn = QPushButton(name) + + pixmapi = getattr(QStyle.StandardPixmap, name) + icon = self.widget.style().standardIcon(pixmapi) + btn.setIcon(icon) + layout_style.addWidget(btn, int(n/Ncol), int(n%Ncol)) + + layout_theme = QGridLayout() + for n, name in enumerate(icons_theme): + icon = QIcon.fromTheme(getattr(QIcon.ThemeIcon, name)) + btn = QPushButton(name) + btn.setIcon(icon) + layout_theme.addWidget(btn, int(n/Ncol), int(n%Ncol)) + + self.widget.layout().addLayout(layout_style) + self.widget.layout().addLayout(layout_theme) + + +app = QApplication(sys.argv) + +w = Icons(QWidget()) +w.widget.show() + +app.exec() \ No newline at end of file diff --git a/src/pymodaq_gui/managers/action_manager.py b/src/pymodaq_gui/managers/action_manager.py index 92035092..f98d8f01 100644 --- a/src/pymodaq_gui/managers/action_manager.py +++ b/src/pymodaq_gui/managers/action_manager.py @@ -23,6 +23,9 @@ def create_icon(icon_name: Union[str, Path]): if pixmap.isNull(): if hasattr(QtGui.QIcon,'ThemeIcon') and hasattr(QtGui.QIcon.ThemeIcon, icon_name): # Test if icon is in Qt's library icon = QtGui.QIcon.fromTheme(getattr(QtGui.QIcon.ThemeIcon, icon_name)) + elif hasattr(QtWidgets.QStyle.StandardPixmap, icon_name): + pixmapi = getattr(QtWidgets.QStyle.StandardPixmap, icon_name) + icon = QtWidgets.QWidget().style().standardIcon(pixmapi) else: icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(pixmap), QtGui.QIcon.Normal, QtGui.QIcon.Off) diff --git a/src/pymodaq_gui/utils/icons.py b/src/pymodaq_gui/utils/icons.py deleted file mode 100644 index 4ece862b..00000000 --- a/src/pymodaq_gui/utils/icons.py +++ /dev/null @@ -1,30 +0,0 @@ -import sys - -from qtpy.QtWidgets import (QApplication, QGridLayout, QPushButton, QStyle, - QWidget) - - -class Window(QWidget): - def __init__(self): - super().__init__() - - icons = sorted([attr for attr in dir(QStyle.StandardPixmap) if attr.startswith("SP_")]) - layout = QGridLayout() - - for n, name in enumerate(icons): - btn = QPushButton(name) - - pixmapi = getattr(QStyle.StandardPixmap, name) - icon = self.style().standardIcon(pixmapi) - btn.setIcon(icon) - layout.addWidget(btn, int(n/4), int(n%4)) - - self.setLayout(layout) - - -app = QApplication(sys.argv) - -w = Window() -w.show() - -app.exec() \ No newline at end of file