На этом шаге мы рассмотрим инструменты для выполнения этой операции.
По умолчанию в левом верхнем углу окна отображается стандартный значок. Отобразить другой значок позволяет метод 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. Результат работы приложения
На следующем шаге мы рассмотрим изменение цвета фона окна.