如何使用Popen.communicate(在Linux上)传递击键(ALT + TAB)?

时间:2018-01-25 18:48:23

标签: python linux python-3.x subprocess raspbian

我在Raspberry Pi上使用全屏模式打开了两张图像(使用ristretto图像查看器)。当满足某些条件时,我需要传递ALT + TAB键击组合以显示另一个。我正在尝试使用Popen.communicate,但我不知道如何传递像ALT + TAB这样的组合键。 有没有人有任何想法?

我需要的是下面的内容(替换" ALT + TAB"使用工作代码):

s = Popen(['ristretto', '-f', 'my.gif' ,'&'],stdin=PIPE)
if my_condition:
    s.communicate("ALT+TAB")

我听说过SendKeys包,但它仅适用于Windows ...

谢谢,Michal

1 个答案:

答案 0 :(得分:1)

您可能无法完全按照您的问题所说 - 使用Popen传递击键。您可以将字节发送到您打开的进程的stdin,但几乎可以肯定它并没有找到它们。键盘事件与stdin上的数据不同。

然而,pyautogui library库可能对此有用。安装完成后,您可以使用Popen启动查看器,然后再使用

pyautogui.hotkey('alt', 'tab')

将alt + tab发送到前台应用程序。您可能需要添加一个短暂的延迟,以确保在发送密钥之前ristretto已完成启动。有关如何使用它的详细信息,请参阅pyautogui's keyboard documentation