Это связано с этот вопрос, но с другим подходом.
В 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 и backgrounding /opt/openoffice.org3/program/scalc &
, но они ничего не делают ( наверное что-то ломает в Autokey и Py)
Ответ: приведенный ниже ответ на самом деле не сработал, но заставил меня больше копаться и нашел другой ТАК ответьте, который сработал в моей ситуации!
#Enter script code -- mapped to <super>+e
import thread
thread.start_new_thread(os.system,('gedit',))
Это полностью сработало! Я могу нажать <super>+e
2 или 3 раза подряд, и он продолжает добавлять вкладки в gedit. :) Этот скрипт заставляет Autokey действовать так, как будто команда в кавычках набирается в командной строке.