QtCore.Qt.WindowStaysOnTopHint не остается поверх DirectX windows - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать окно PyQt5 (OS = MS Windows 10), которое будет отображаться поверх всего на моем экране (например, оверлея). Для этого я использую:

    self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.WindowTransparentForInput)

Пока он отлично работает с любым обычным окном (Word, Excel, браузеры и т. Д. c.). Однако поведение меняется, когда приложение, которое я пытаюсь использовать, является игрой DirectX.

  • Если я запустил сценарий Python перед игрой, он отобразится поверх него, и работать нормально. Однако, если я выберу Alt-Tab из игры и вернусь к ней, оверлей больше не будет отображаться поверх игры (он все равно будет отображаться поверх всех остальных windows, только не поверх игры).
  • Если я запускаю игру до сценария Python, то же самое: он будет отображаться поверх всего, но не поверх игры DirectX.
  • Когда я запускаю Python сценарий, затем игра, затем Alt-Tab из игры и Alt-Tab, чтобы он перестал отображаться в игре, я могу заставить его снова появиться, если выйду и перезапущу игру с нуля (без остановки Python сценарий).

Хороший пример сценария, в котором можно увидеть такое поведение: https://github.com/georgegach/crosshair/blob/master/cross.py

Есть ли какой-нибудь вариант сделать это? Окно PyQt5 остается поверх всего, пока не будет остановлено?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...