0

Хочу сделать виджет на PyQt5 для рабочего стола, в теории он не должен сворачиваться и должен находиться под всеми окнами. При выставлении следующих флагов и атрибутов все работает как надо, за исключением сворачивания на Win+D.

self.setWindowFlags(
    Qt.Window
    | Qt.WindowStaysOnBottomHint
    | Qt.CustomizeWindowHint
    | Qt.CoverWindow
    | Qt.FramelessWindowHint
)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.setAttribute(Qt.WA_ShowWithoutActivating, True)

Нашел вот такое решение, но как это реализовать на PyQt?

  • Так через winapi также меняй родителя. Айди окна получить не сложно – eri Mar 02 '23 at 10:49
  • @eri, То есть в pyqt нету способа задать рабочий стол, как родителя виджета? Я пробовал через QApplication.desktop(), но судя по всему, это не то, что мне нужно – Игорь Степанов Mar 02 '23 at 11:24
  • переопределите для окна обработчик closeEvent и игнорируйте в нем запрос на сворачивание – Sergey Tatarintsev Mar 02 '23 at 12:36
  • @sergey-tatarintsev, даже если и можно было так сделать, то скорее через hideEvent, но тут проблема в том, что Windows при нажатии win+d, судя по всему, отправляет какой то иной сигнал, отличный от обычного сворачивания, который не ловится даже обычным event'ом – Игорь Степанов Mar 02 '23 at 12:46
  • Добавлю, что при нажатии на Win+D, и при попытке переключиться на любое приложение, мое приложение тоже разворачивается, и автоматически уходит на задний фон, как и должно быть – Игорь Степанов Mar 02 '23 at 12:49

0 Answers0