Шаг 40.
Библиотека PyQt5.
Управление окном приложения. Смена значка в заголовке окна

    На этом шаге мы рассмотрим инструменты для выполнения этой операции.

    По умолчанию в левом верхнем углу окна отображается стандартный значок. Отобразить другой значок позволяет метод setWindowIcon() класса QWidget. В качестве параметра метод принимает экземпляр класса QIcon из модуля QtGui.

    Чтобы загрузить значок из файла, следует передать путь к файлу конструктору этого класса. Если указан относительный путь, то поиск файла будет производиться относительно текущего рабочего каталога. Получить список поддерживаемых форматов файлов можно с помощью статического метода supportedImageFormats() класса QImageReader, объявленного в модуле QtGui. Метод возвращает список с экземплярами класса QByteArray. Получим список поддерживаемых форматов:

>>> from PyQt5 import QtGui
>>> for i in QtGui.QImageReader.supportedImageFormats(): 
            print(str(i,"ascii").upper(), end=" ")

BMP CUR DDS GIF ICNS ICO JP2 JPEG JPG MNG PBM PGM PNG 
PPM SVG SVGZ TGA TIF TIFF WEBP XBM XPM 

    Если для окна не задан значок, будет использоваться значок приложения, установленный с помощью метода setWindowIcon() класса QApplication. В качестве параметра метод также принимает экземпляр класса QIcon.

    Вместо загрузки значка из файла можно воспользоваться одним из встроенных значков. Загрузить стандартный значок позволяет следующий код:

ico = window.style().standardIcon(QtWidgets.QStyle.SP_MessageBoxCritical) 
window.setWindowIcon(ico)

    Посмотреть список всех встроенных значков можно в документации к классу QStyle (см. https://doc.qt.io/qt-5/qstyle.html#StandardPixmap-enum).

    В качестве примера создадим значок размером 16 на 16 пикселей в формате ICO и сохраним его в одной папке с программой, после чего установим этот значок для окна и всего приложения.

#  -*- coding:  utf-8  -*-
from PyQt5 import QtGui, QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Смена значка в заголовке окна")
window.resize(300, 100)
ico = QtGui.QIcon("icon.ico")
window.setWindowIcon(ico) # Значок для окна
app.setWindowIcon(ico)    # Значок приложения
window.show()
sys.exit(app.exec_())
Архив с файлами можно взять здесь.

    Результат работы приложения изображен на рисунке 1.


Рис.1. Результат работы приложения

    На следующем шаге мы рассмотрим изменение цвета фона окна.




Предыдущий шаг Содержание Следующий шаг