【发布时间】:2012-06-19 01:59:33
【问题描述】:
这与this question 相关,但有不同的看法。
在 Ubuntu 中,我使用 Autokey,它使用 python 来自动化它观察到的击键。所以我将<super>+e 映射到打开 Gedit,<shift>+<super>+3 映射到打开 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 answer确实适合我的情况!
#Enter script code -- mapped to <super>+e
import thread
thread.start_new_thread(os.system,('gedit',))
这完全有效!我可以连续点击<super>+e 2 或 3 次,它会不断向 gedit 添加标签。 :) 此脚本使 Autokey 的行为就像在命令行中键入引号中的命令一样。
【问题讨论】:
标签: python ubuntu-12.04 autokey