На этом шаге мы рассмотрим методы, используемые для выполнения указанных операций.
Отследить изменение состояния окна (сворачивание, разворачивание, скрытие и отображение) позволяют следующие методы:
Для примера выведем в консоль текущее состояние окна при его сворачивании, разворачивании, скрытии и отображении.
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtWidgets class MyWindow(QtWidgets.QWidget): def __init__ (self, parent = None): QtWidgets.QWidget.__init__(self, parent) self.resize(300, 100) def changeEvent(self, e): if e.type() == QtCore.QEvent.WindowStateChange: if self.isMinimized(): print("Окно свернуто") elif self.isMaximized(): print("Окно раскрыто до максимальных размеров") elif self.isFullScreen(): print("Полноэкранный режим") elif self.isActiveWindow(): print("Окно находится в фокусе ввода") QtWidgets.QWidget.changeEvent(self, e) # Отправляем дальше def showEvent(self, e): print("Окно отображено") QtWidgets.QWidget.showEvent(self, e) # Отправляем дальше def hideEvent(self, e): print("Окно скрыто") QtWidgets.QWidget.hideEvent(self, e) # Отправляем дальше if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
Результат работы приложения изображен на рисунке 1.
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим изменение положения и размеров окна.