Skip to content

Icon

Qt Base Class: QIcon

Signature: QIcon(self) -> None QIcon(self, engine: PySide6.QtGui.QIconEngine) -> None QIcon(self, fileName: str) -> None QIcon(self, other: Union[PySide6.QtGui.QIcon, PySide6.QtGui.QPixmap]) -> None QIcon(self, pixmap: Union[PySide6.QtGui.QPixmap, PySide6.QtGui.QImage, str]) -> None

Base classes

Name Children Inherits
SerializeMixin
prettyqt.utils.serializemixin
QIcon
PySide6.QtGui
QIcon(self) -> None

⋔ Inheritance diagram

graph TD
  1473245532864["gui.Icon"]
  1473299806240["utils.SerializeMixin"]
  140713234304496["builtins.object"]
  1473299954512["QtGui.QIcon"]
  1473291690208["Shiboken.Object"]
  1473299806240 --> 1473245532864
  140713234304496 --> 1473299806240
  1473299954512 --> 1473245532864
  1473291690208 --> 1473299954512
  140713234304496 --> 1473291690208

🛈 DocStrings

Bases: SerializeMixin, QIcon

Scalable icons in different modes and states.

Source code in prettyqt\gui\icon.py
class Icon(serializemixin.SerializeMixin, gui.QIcon):
    """Scalable icons in different modes and states."""

    def __repr__(self):
        return get_repr(self)

    def __bool__(self):
        return not self.isNull()

    def __getstate__(self):
        pixmap = self.pixmap(256, 256)
        return bytes(gui.Pixmap(pixmap))

    def __setstate__(self, ba):
        px = gui.Pixmap()
        px.__setstate__(ba)
        self.add_pixmap(px)

    @classmethod
    def for_color(cls, color_str: str) -> Self:
        color = gui.Color(color_str)
        bitmap = gui.Pixmap(16, 16)
        bitmap.fill(color)
        return cls(bitmap)

    @classmethod
    def from_char(cls, char: str, background="black", color="white") -> Self:
        """Create a QIcon with a given character."""
        icon = cls()
        for size in (16, 32, 64):
            px = gui.Pixmap.create_char(
                char, background=background, color=color, size=size
            )
            icon.addPixmap(px)
        return icon

    @classmethod
    def from_image(cls, image: gui.QImage) -> Self:
        return cls(gui.Pixmap.fromImage(image))

    def get_available_sizes(
        self,
        mode: ModeStr | gui.QIcon.Mode = "normal",
        state: StateStr | gui.QIcon.State = "off",
    ) -> list[core.Size]:
        m = MODE.get_enum_value(mode)
        s = STATE.get_enum_value(state)
        return [core.Size(i) for i in self.availableSizes(m, s)]

    def add_pixmap(
        self,
        data: core.QByteArray | gui.QPixmap | bytes,
        mode: ModeStr | gui.QIcon.Mode = "normal",
        state: StateStr | gui.QIcon.State = "off",
    ):
        if isinstance(data, bytes):
            data = core.QByteArray(data)
        if isinstance(data, core.QByteArray):
            pixmap = gui.QPixmap()
            pixmap.loadFromData(data)
        else:
            pixmap = data
        self.addPixmap(pixmap, MODE.get_enum_value(mode), STATE.get_enum_value(state))

    def get_pixmap(
        self,
        size: datatypes.SizeType | int,
        mode: ModeStr | gui.QIcon.Mode = "normal",
        state: StateStr | gui.QIcon.State = "off",
    ) -> gui.QPixmap:
        sz = datatypes.to_size(size)
        return self.pixmap(sz, MODE.get_enum_value(mode), STATE.get_enum_value(state))

    def get_actual_size(
        self,
        size: datatypes.SizeType,
        mode: ModeStr | gui.QIcon.Mode = "normal",
        state: StateStr | gui.QIcon.State = "off",
    ) -> core.Size:
        sz = datatypes.to_size(size)
        m = MODE.get_enum_value(mode)
        s = STATE.get_enum_value(state)
        actual_size = self.actualSize(sz, m, s)
        return core.Size(actual_size)

from_char(char: str, background: str = 'black', color: str = 'white') -> Self classmethod

Create a QIcon with a given character.

Source code in prettyqt\gui\icon.py
@classmethod
def from_char(cls, char: str, background="black", color="white") -> Self:
    """Create a QIcon with a given character."""
    icon = cls()
    for size in (16, 32, 64):
        px = gui.Pixmap.create_char(
            char, background=background, color=color, size=size
        )
        icon.addPixmap(px)
    return icon