我正在使用ScriptingBridge检索当前在iTunes,Mac OS X中播放的曲目。
from ScriptingBridge import SBApplication
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
print iTunes.currentTrack().name()
但是当我运行最后一行时,实际上获得了音轨名称,一个应用程序出现在Dock中,并且在我关闭我的Python程序之前不会离开,无论我是在REPL中运行还是作为脚本运行。图标就是这个,至少在我的机器上:
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/Resources/PythonInterpreter.icns
脚本效果很好,我可以通过SB从iTunes获取所需的所有信息。我只想保持图标弹出。为什么该特定方法调用会调用停靠图标?
答案 0 :(得分:4)
将其从码头上移除的一种愚蠢方法是阻止Python.app
出现在码头上:
修改/System/Library/Frameworks/Python.framework/Versions/Current/Resources/Python.app/Contents/Info.plist
并将此键值对添加到主<dict>
元素中:
<key>LSUIElement</key><string>1</string>
我希望还有另一种方法可以做到这一点,因为这种变化是全局性的 - 没有Python脚本(使用系统Python)会在这个设置上出现在Dock上。自发布此问题以来,我已将我的LSUIElement设置为0,因为没有其他方法可以抓取,例如,matplotlib生成的窗口,除非它在停靠栏中有一个图标。