Вот мое полное решение с волшебной функцией IPython.
Установите appscript (см. этот вопрос о программном переключении приложений в OS X) и поставьтеследующий код в скрипте с именем activate.py
в папке ~/.ipython
.
import appscript
import sys
appscript.app(pid=int(sys.argv[1])).activate()
Теперь отредактируйте файл конфигурации ~/.ipython/ipy_user_conf.py
и определите магическую функцию:
def wxactivate(self, arg):
import wx
pid = wx.GetProcessId()
ip = self.api
import os
here = os.path.dirname(__file__)
import subprocess
subprocess.Popen([os.path.join(here, 'activate.py'), str(pid)])
Теперь вам просто нужно зарегистрировать эту волшебную функцию IPython, поместив в этот же файл конфигурации следующее:
ip.expose_magic('wxactivate', wxactivate)
Теперь, после запуска IPython -wthread
, вы можете вызвать %wxactivate
и переключиться насоответствующее приложение Python!
(обратите внимание, что причина, по которой нужно запускать вызов приложения activate()
в другом процессе , мне неясна; возможно, это связано с некоторымипроблема с потоками ... любое объяснение приветствуется)