Я пытаюсь создать окно 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 остается поверх всего, пока не будет остановлено?