Я пытаюсь написать программу для Linux (в настоящее время использующую python / tkinter) для запуска небольшого окна поверх полноэкранной игры (которая запускается с использованием wine). В окне будет отображаться некоторая информация, и для этого потребуется ввод мыши и клавиатуры.
В настоящее время я могу всегда размещать окно сверху, задав window.overrideredirect(True)
или присвоив ему самый высокий порядок размещения в моем оконном менеджере.
Однако я больше не могу взаимодействовать с окном после запуска игры. Клики просто проходят в основное игровое окно.
Почему?
Извините, нет короткого примера, чтобы продемонстрировать это, поскольку для этого требуется нестандартный менеджер окон для воспроизведения. Но, подсказки:
- В некоторых случаях существует отдельная проблема, влияющая на переопределяемые окна от получения ввода. Это не моя проблема, так как у меня та же проблема с окном без переопределения. Переадресация Tkinter предотвращает определенные события в Mac и Linux
- Если я использую
xdotool key XF86LogGrabInfo
, я не вижу, чтобы игра зарегистрировала какие-либо захваты, как с XGrabPointer или XGrabKeyboard, а сама игра имеет возможность отключить «ограничивающий курсор мыши», поэтому это не кажется как сама игра монополизирует мышь.
Я несколько раз пытался запустить window.focus_force()
, и я могу взаимодействовать с окном после того, как оно получит фокус. Но после потери фокуса он не восстанавливает фокус, и повторное воровство фокуса само по себе нежелательно.
def Focus():
window.focus_force()
window.after(2000, Focus)
Focus()
Итак, я думаю, что моя проблема в том, что мое окно не фокусируется, когда я пытаюсь щелкнуть по нему, несмотря на то, что это окно в верхней части стека. Почему нет?