这与这个问题有关,但有不同的看法。
在 Ubuntu 中,我使用 Autokey,它使用 python 来自动化它观察到的击键。所以我已经<super>+e
映射到<shift>+<super>+3
打开 Gedit,打开 OOwriter 等。当我进行其中一个调用时,我不能再进行另一个调用,直到之前调用的程序退出。
这是它执行的脚本示例:
import subprocess
subprocess.call("/opt/openoffice.org3/program/scalc")
...使用相同的行为:
import os
os.system("/opt/openoffice.org3/program/scalc")
这一切在我之前的 Ubuntu 10.04LTS 中运行顺利,但从那以后情况发生了变化,我无法重复进行这些调用。
您能帮我解决如何在不等待程序退出的情况下从 subprocess.call() 中“取回”的方法进行分叉或做一些事情吗?我尝试了 nohup 和背景/opt/openoffice.org3/program/scalc &
,但它们什么也没做(可能会破坏 Autokey 和 Py 中的某些内容)
答案:下面的答案实际上并没有用,但让我更多地窥探,我找到了另一个对我的情况有用的SO 答案!
#Enter script code -- mapped to <super>+e
import thread
thread.start_new_thread(os.system,('gedit',))
这完全有效!我可以连续点击<super>+e
2 或 3 次,它会不断向 gedit 添加标签。:) 此脚本使 Autokey 的行为就像在命令行中键入引号中的命令一样。