在Python中启动进程并获取其窗口ID

5 投票
2 回答
2179 浏览
提问于 2025-04-16 15:08

假设我运行了:

import subprocess;
P = subprocess.Popen(['gnome-terminal');

然后我得到了一个名为 PPopen 类的对象:

<subprocess.Popen object at 0xb72a9d0c>

我该如何获取这个子进程的 窗口标识 呢?

最终,我想用 wmctrl 来调整这个子进程生成的窗口的几何属性,但为此我需要一个叫做 窗口标识 的东西(可以查看wmctrl 的文档)。

为了给这个问题提供更多背景,wmctrl -l 会输出在 GNOME 桌面上运行的窗口列表,第一列显示每个窗口的 窗口标识。这是一个十六进制数字,我注意到它和上面 Popen 输出的那个不同

我查看了 Popen 的文档,但我不确定接下来该怎么做。

有什么想法吗?谢谢!

2 个回答

0

如果你愿意使用外部的命令行工具,那么可以使用xdotool

你可以输入这个命令:xdotool search --any --pid 1234

4

获取窗口 ID 的一个简单方法是使用 wmctrl -lp 这个命令,它会显示出进程的 PID(进程 ID)。你只需要找到和你的子进程的 Popen.pid 相匹配的那个,就能找到这个进程的窗口 ID 了。

撰写回答