Tkinter не связывает окно с pid - PullRequest
0 голосов
/ 17 июня 2020

Я использую wmctrl -lp, чтобы попытаться найти идентификатор процесса, связанный с окном tkinter GUI. Однако похоже, что окно tkinter не связано с pid.

0x06400010  0 0                     N/A tk

Используя xprop, похоже, что свойство _NET_WM_PID не установлено.

Однако я не могу найти способ получить tkinter, чтобы установить это автоматически, или явно установить его из моего python кода.

Контекст таков: у меня есть сценарий, который ищет любые windows " принадлежит »определенному процессу или любым его дочерним процессам. Но окно tkinter не может быть найдено этим сценарием, потому что сценарий не видит, что оно связано с pid сценария python, который создает окно.

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ: Дальнейшая странность

Похоже, эта проблема возникает только в том случае, если я запускаю сценарий python из сценария bash.

Итак, если у меня есть сценарий bash gui_from_bash_script.sh, в котором говорится:

#!/bin/bash

python my_gui.py

... а затем я запускаю ./gui_from_bash_script.sh, тогда возникает проблема.

Если я просто запускаю python my_gui.py с терминала, я не понимаю проблемы.

1 Ответ

0 голосов
/ 17 июня 2020

Мне удалось решить эту проблему, добавив следующую строку при создании окна root.

root = tk.Tk()
root.client(socket.gethostname())   # THIS LINE HERE

Я еще не понимаю, почему это имело значение, но, похоже, это произошло.

wmctrl -lp теперь показывает:

0x06400010  0 1234   my-host-name tk
...