Как полноэкранное окно препятствует тому, чтобы окно сверху получало щелчки или фокусировку? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь написать программу для 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()
    

Итак, я думаю, что моя проблема в том, что мое окно не фокусируется, когда я пытаюсь щелкнуть по нему, несмотря на то, что это окно в верхней части стека. Почему нет?

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